Bou*_*uke 29 core-data swift ios8
在CoreData中,我定义了一个有序的多对多关系.这种关系在Swift中定义如下:
@NSManaged var types : NSMutableArray
Run Code Online (Sandbox Code Playgroud)
但是,要最好使用Swift,我想使用普通的Swift数组Type[].但是,CoreData强迫我使用NS(Mutable)Array.我该如何输入/转换NSArray为Array<Type>[]?
显然,混淆起因于以下错误:
let array = obj.types as T[] // Cannot convert expression's type 'Node[]' to type '$T2'
Run Code Online (Sandbox Code Playgroud)
虽然这是编辑接受的:
let array = obj.types as AnyObject[] as T[] // No complaint
Run Code Online (Sandbox Code Playgroud)
mat*_*att 14
我目前正在使用
obj.types.allObjects as Type[],但这感觉就像一个黑客/解决方法.
然后修改你的感受.你正在做的是你如何 "输入/转换NSArray为" Array<Type>[].
NSArray总是以包含的方式进入Swift AnyObject(即a Array<AnyObject>,aka AnyObject[]).如果您知道它包含所有类型,则将其转换为特定类型取决于您,以及您如何执行此操作正是您应该执行的操作.
编辑在Swift 2.0和新的iOS 9 API中,NSArray通常会正确输入,不需要强制转换.
编辑2在Swift 3.0中,一个未正确输入的NSArray虽然不常见,但它将作为包含Any而不是AnyObject仍然必须被转换为特定类型.
| 归档时间: |
|
| 查看次数: |
26901 次 |
| 最近记录: |