Какой int соответствует CKRecordValue?

Мне нужно сохранить int в CloudKit, но кажется, что ни Int 16, ни 32, ни 64 бита не поддерживаются. Как вы относитесь к этому вопросу? Я хочу присвоить значение Core Data атрибуту записи CloudKit.

recordS.setObject(recordValue, forKey:attributeName)

@property (nonatomic) int32_t recordValue; <- declaration in Core Data header

введите здесь описание изображения


person János    schedule 01.12.2014    source источник
comment
Покажите нам соответствующий код. Связано: stackoverflow.com/questions/26319350. См. также nshipster.com/swift-literal-convertible.   -  person Robert Harvey    schedule 01.12.2014


Ответы (2)


int32_t нужно завернуть в NSNumber

NSNumber(int: recordValue)
person János    schedule 01.12.2014
comment
Можете ли вы сделать этот пост (и/или исходный пост) более приемлемым для широкой аудитории, предоставив больше контекста (и кода)? - person Werner; 01.12.2014

Из документации:

Следующие классы принимают этот протокол и поддерживаются CloudKit:

NSString

NSNumber

NSArray

NSDate

NSData

CKReference

CKAsset

CLРасположение

Таким образом, ваш CKRecord просто не может напрямую передать Int из CloudKit, ему нужно передать NSNumber следующим образом:

record["my_integer_key"] = NSNumber(value: my_record_value)

И наоборот, когда вы хотите прочитать CKRecord, полученный из CloudKit, вы не можете предположить, что это Int из коробки, потому что на самом деле это NSNumber:

my_integer_property = (record["my_integer_key"] as NSNumber).intValue
person Frédéric Adda    schedule 03.10.2017