Objective c 将NSArray的内容添加到Swift数组
我在我的应用程序中同时使用swift和objective-c 我有一个CustomClass,我想为该类创建一个swift数组,并从名为oldClass的objective-c类向其添加内容,该类在名为arrayOfCustomClass的NSArray中具有这些对象的数组Objective c 将NSArray的内容添加到Swift数组,objective-c,swift,Objective C,Swift,我在我的应用程序中同时使用swift和objective-c 我有一个CustomClass,我想为该类创建一个swift数组,并从名为oldClass的objective-c类向其添加内容,该类在名为arrayOfCustomClass的NSArray中具有这些对象的数组 var newArray = [CustomClass]() newArray += oldClass.arrayOfCustomClass 这会导致一个错误: '[(CustomClass)]' is not ident
var newArray = [CustomClass]()
newArray += oldClass.arrayOfCustomClass
这会导致一个错误:
'[(CustomClass)]' is not identical to 'CGFloat'
有什么帮助吗?
谢谢
雷扎问题是斯威夫特根本不知道NSArray里有什么。必须将NSArray显式强制转换为
[CustomClass]
(最好不要撒谎,否则会在运行时崩溃)。似乎有效的方法是:
newArray += oldClass.arrayOfCustomClass as AnyObject as [CustomClass]
要安全地执行此操作,您只需尝试可选的强制转换。如果您认为
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)
}
}
显示其余的实际代码!什么是
oldClass
?什么是arrayOfCustomClass
?但这里可能还有其他问题,在你透露什么是arrayOfCustomClass
之前,你不会知道它到底是什么。正如我下面的回答所示,我需要先对任何对象进行强制转换,然后才能对自定义类进行强制转换,这可以通过可选强制转换安全地完成-请参阅我的答案。@reza23你仍然没有按照我的要求显示你的Objective-C代码,因此你得到了一个错误的强制转换需要对任何物体。这里有些东西你需要修复,但你拒绝展示它是什么。