2016-11-10 8 views
1

У меня есть пользовательский класс, с которым я создал (swift-y) структуру NSCodable. Теперь я хочу преобразовать это в CKRecord, чтобы использовать CloudKit. Несмотря на то, что при кодировании моей структуры я устанавливал пары «ключ-значение», я понимаю, что структура преобразуется в NSData и что вы не можете преобразовать ее в словарь (или другой объект с ключом). Поэтому я чувствую, что это не путь.NSCoding to CKRecord

Есть ли способ сделать это преобразование напрямую? Или с шагом между ними (например, преобразование данных в [String: String] - словарь)?

+0

Вы можете хранить 'NSData' в CKRecord. – rmaddy

+0

Но это приведет к созданию капли данных внутри CKRecord. Я хотел бы иметь удобный способ его преобразования. –

ответ

0

NSCoding предназначен только для перехода от/к тому же классу. Вместо этого напишите метод toServerDictionary в своем пользовательском классе, включая только свойства, которые вы хотите отправить в CloudKit, а затем используйте результат для вызова setValuesForKeys на CKRecord.

Скорее всего, вы найдете свойства, которые должны быть конкретными типами, и в этом случае лучше сделать свой метод вServerRecord и создать CKRecord и вернуть его. У вас также может быть updateWithServerRecord, чтобы установить все, что вы получили.