2014-12-01 55 views
0

我需要存儲intCloudKit,但它似乎都不支持Int 16,32,64位。你如何看待這個問題?我想爲CloudKit記錄的屬性分配Core Data值。哪個int符合CKRecordValue?

recordS.setObject(recordValue, forKey:attributeName) 

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

enter image description here

+0

向我們顯示您的相關代碼。相關:http://stackoverflow.com/questions/26319350。另請參閱http://nshipster.com/swift-literal-convertible/ – 2014-12-01 15:37:07

回答

1

int32_t需要被包裹成NSNumber

NSNumber(int: recordValue) 
+0

您是否可以通過提供更多的上下文(和代碼)使這篇文章(和/或您的原文)更容易被更廣泛的受衆接受? – Werner 2014-12-01 17:09:25

1

從文檔:

以下類採用這個協議,並通過 CloudKit被支持:

的NSString

的NSNumber

的NSArray

的NSDate

NSData的

CKReference

CKAsset

CLLocation

所以你CKRecord只是不能直接通過從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