2014-09-25 23 views
5

我在我的应用程序中同时使用了swift和objective-c。将NSArray的内容添加到Swift数组

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

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

这将导致一个错误:

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

任何帮助吗? 谢谢 Reza

+1

显示其余的实际代码!什么是'oldClass'?什么是'arrayOfCustomClass'? – matt 2014-09-25 15:27:23

回答

0

问题是Swift不知道什么是在NSArray中。你必须明确地将NSArray强制转换为[CustomClass](并且你最好不要说谎,否则你会在运行时崩溃)。

+0

但是这里可能还有其他问题,直到你揭示'arrayOfCustomClass'的真正含义才会知道。 – matt 2014-09-25 15:30:40

+0

正如我在下面的回答显示,我需要投到AnyObject之前,我可以投到CustomClass – reza23 2014-09-25 16:09:47

+0

这可以通过一个可选的投掷安全地完成 - 请参阅我的答案。 – 2014-09-25 16:19:50

0

什么似乎工作是:

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

要做到这一点安全,你只需要尝试一个可选的演员。如果你觉得NSArray只有CustomClass类型的元素,你可以这样做:如果你想提取CustomClass元素(从你的要求有一点不同,我知道)

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

,这是这样的:

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