将字符串的 NSObject 转换为 [String]
Cast NSObject of Strings to [String]
我无法尝试将字符串的 NSObject 转换为 [String]。
我正在使用 coreData,我的可转换对象是一个 NSObject。烦人的是它是不可枚举的。所以我惯用的招数不管用。
谁能帮帮我?
谢谢
{(
dried,
stewed
)}
这应该变成这样:
[dried, stewed].
通常的向下转换不起作用:
myObject as! [String] :(
我还注意到有时错误消息说它不能向下转换 NSObject 有时它说:
Could not cast value of type '__NSSetI' (0x10f101138) to 'NSArray' (0x10f101598).
编辑:
我找到了解决方法:
let mySet = myObject as! NSSet
let myArr : [String] = mySet.map { [=14=] as! String } . // yay!
我首先将其转换为一个集合以使其可枚举,然后将其转换为 [String]
有趣的是这不起作用:
let mySet = myObject as! NSSet
let myArr = mySet as! [String] // nope.
如果 myObject 是一个集合(核心数据模型中的一种关系),那么请尝试
let arr:[String] = Array(myObject) as! [String]
Set 和 Array 不是同一种类型,不能相互转换。
理想情况下,您应该将 Objective-C 类型 NSSet
转换为 Swift Set
:
let mySet = myObject as! Set<String>
如果迭代是您唯一的目的,那么这就是您所需要的。
如果您确实需要数组,请从集合中创建一个新数组:
let myArray = Array(mySet)
我找到了解决方法:
let mySet = myObject as! NSSet
let myArr : [String] = mySet.map { [=10=] as! String } . // yay!
我首先将其转换为一个集合以使其可枚举,然后将其转换为 [String]
有趣的是这不起作用:
let mySet = myObject as! NSSet
let myArr = mySet as! [String] // nope.
我无法尝试将字符串的 NSObject 转换为 [String]。 我正在使用 coreData,我的可转换对象是一个 NSObject。烦人的是它是不可枚举的。所以我惯用的招数不管用。 谁能帮帮我?
谢谢
{(
dried,
stewed
)}
这应该变成这样:
[dried, stewed].
通常的向下转换不起作用:
myObject as! [String] :(
我还注意到有时错误消息说它不能向下转换 NSObject 有时它说:
Could not cast value of type '__NSSetI' (0x10f101138) to 'NSArray' (0x10f101598).
编辑: 我找到了解决方法:
let mySet = myObject as! NSSet
let myArr : [String] = mySet.map { [=14=] as! String } . // yay!
我首先将其转换为一个集合以使其可枚举,然后将其转换为 [String]
有趣的是这不起作用:
let mySet = myObject as! NSSet
let myArr = mySet as! [String] // nope.
如果 myObject 是一个集合(核心数据模型中的一种关系),那么请尝试
let arr:[String] = Array(myObject) as! [String]
Set 和 Array 不是同一种类型,不能相互转换。
理想情况下,您应该将 Objective-C 类型 NSSet
转换为 Swift Set
:
let mySet = myObject as! Set<String>
如果迭代是您唯一的目的,那么这就是您所需要的。
如果您确实需要数组,请从集合中创建一个新数组:
let myArray = Array(mySet)
我找到了解决方法:
let mySet = myObject as! NSSet
let myArr : [String] = mySet.map { [=10=] as! String } . // yay!
我首先将其转换为一个集合以使其可枚举,然后将其转换为 [String]
有趣的是这不起作用:
let mySet = myObject as! NSSet
let myArr = mySet as! [String] // nope.