将NSArray的内容添加到Swift Array

时间:2014-09-25 15:24:29

标签: objective-c swift

我在我的应用中使用了swift和objective-c。

我有一个CustomClass,我想为类创建一个swift数组,并从我的Objective-c类中添加内容,该类名为oldClass,在NSArray中有一个名为arrayOfCustomClass的这些对象的数组。

var newArray = [CustomClass]()
newArray += oldClass.arrayOfCustomClass

这会导致错误:

'[(CustomClass)]' is not identical to 'CGFloat'

有任何帮助吗? 谢谢 礼

3 个答案:

答案 0 :(得分:0)

问题是Swift对NSArray中的内容一无所知。您必须明确地将NSArray强制转换为[CustomClass](并且最好不要撒谎,否则您将在运行时崩溃)。

答案 1 :(得分:0)

似乎有用的是:

newArray += oldClass.arrayOfCustomClass as AnyObject as [CustomClass]

答案 2 :(得分:0)

为了安全地做到这一点,你只需要尝试一个可选的演员阵容。如果您认为NSArray只包含CustomClass类型的元素,则可以执行以下操作:

var newArray = [CustomClass]()
if let customArray = oldClass.arrayOfCustomClass as? [CustomClass] {
    newArray += customArray
}

如果你想提取CustomClass元素(与你提出的问题略有不同,我知道),就是这样:

var newArray = [CustomClass]()
for element: AnyObject in oldClass.arrayOfCustomClass {
    if let custom = element as? CustomClass {
        newArray.append(custom)
    }
}