Error: Can't assign Value of type '[SomeObject]' to type '[NSMutableArray]'

Error: Can't assign Value of type '[SomeObject]' to type '[NSMutableArray]'

我一直在尝试将 Swift 类型的数组分配给 Objective-C 类型的数组,因为我正在尝试同时使用 Objective-C 和 Swift Class 在我的项目中。 在我的 swift class 中,我声明了一个数组 var musicEntities = [MusicEntity]() .当我尝试分配以实现以下代码时:

let musicVC: MusicViewController = MusicViewController.sharedInstance()
musicVC.musicEntities = musicEntities // line2 

在第 2 行我得到以下错误:

Can't assign Value of type '[SomeObject]' to type '[NSMutableArray]'

我知道转换可以帮助我解决 problem.I 我试图在 Stack Overflow 中找到具体的答案,但我没有得到任何可能解决我的问题的具体答案。我尝试了很多方法将其转换为 NSMutableCompatible,但是当我尝试转换时出现了不同类型的错误。

如何将 [MusicEntity] 数组转换为 NSMutableArray?我需要关于我的问题的具体答案。

期待answer.Thanks。

尝试这种方法,但请参阅我的警告

import Foundation

class C {}
var nsArray = NSMutableArray()
nsArray.addObject(C())
var swiftArray = nsArray as AnyObject as! [C]
dump(swiftArray)
swiftArray.dynamicType // Array<C>.Type
/*
▿ 1 element
- [0]: C #0
*/

// oposite

class C1 {}
var arr = [C1()]
// WARNING, if C1 will be value type (aka struct C1{})
// the next sentence will crash you programm
var nsArray1 = arr as! NSMutableArray // compiler warning
dump(nsArray1)
/*
▿ 1 element
- [0]: C1 #0
*/
nsArray1.dynamicType // _SwiftDeferredNSArray.Type

所以下一行会崩溃

nsArray1.addObject(C1())

你能做的最好的事情就是创建一个新的 NSMutableArray 并填充它

let newNsArray = NSMutableArray(array: arr)
newNsArray.addObject(C())
dump(newNsArray)
/*
▿ 2 elements
- [0]: C1 #0
- [1]: C #1
*/

尝试在将 musicEntities 转换为 NSArray 后调用 mutableCopy,然后将其结果向下转换为 NSMutableArray:

musicVC.musicEntities = (musicEntities as NSArray).mutableCopy() as! NSMutableArray