首页 > 解决方案 > 将字符串的 NSObject 转换为 [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 { $0 as! String } . // yay!

我首先将其转换为一个集合以使其可枚举,然后将其转换为 [String]

有趣的是,这不起作用:

let mySet = myObject as! NSSet 
let myArr = mySet as! [String] // nope.

标签: swiftcastingnsobject

解决方案


如果 myObject 是一个集合(核心数据模型中的关系),那么尝试做

let arr:[String] = Array(myObject) as! [String]

推荐阅读