Moo*_*Cat 21 objective-c optional nsmanagedobject swift
我正在Swift中创建一个NSManagedObject子类,当我创建一个类型为Int,Float或Double的可选属性时,我得到一个错误(也许是其他我没试过的).
@NSManaged var number: Float? //error:Property cannot be marked @NSManaged because its type cannot be represented in Objective-C
@NSManaged var anotherNumber: Float //no error
@NSManaged var array: NSArray? //no error
@NSManaged var anotherArray: Array<String>? //no error
Run Code Online (Sandbox Code Playgroud)
Objective-C中可以表示哪些可选类型?当我使用Swift数组或字符串时(以及当我没有使用Optional Int或Double时),为什么不出现错误?
Mar*_*n R 21
您无法将任意类型分配给Core Data属性,因为访问器方法是在运行时动态创建的.如果您 在Xcode中创建一个Objective-C托管对象子类,那么您将看到Core Data使用的正确数据类型,例如
NSNumber
for Boolean,Integer,Float和Double属性,NSString
对于String属性,NSSet
对于(无序的)多对多的关系.您必须在Swift中选择相同的数据类型.
从理论上讲,原始数据类型的标量访问器也应该可以正常工作,但是当前的Swift版本似乎存在问题,比较 如何将Core Data Integer 64与Swift Int64一起使用?或尝试更改Bool属性时出现EXC_BAD_ACCESS错误.
归档时间: |
|
查看次数: |
14761 次 |
最近记录: |