我在我的应用中使用了swift和objective-c。
我有一个CustomClass,我想为类创建一个swift数组,并从我的Objective-c类中添加内容,该类名为oldClass,在NSArray中有一个名为arrayOfCustomClass的这些对象的数组。
var newArray = [CustomClass]()
newArray += oldClass.arrayOfCustomClass
这会导致错误:
'[(CustomClass)]' is not identical to 'CGFloat'
有任何帮助吗? 谢谢 礼
答案 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)
}
}