无法将'Swift._SwiftDeferredNSArray'(0x11241ab30)类型的值转换为'NSMutableArray'(0x1109ef598)

时间:2017-09-22 05:09:37

标签: swift

group.issues = temp.sortedArray(using: [sortDescriptor]) as! NSMutableArray

系统版本为iOS 11.0,Xcode 9.0。

我们如何解决这个问题?

2 个答案:

答案 0 :(得分:6)

根据你实际做的事情,你可能最好使用一个声明为var的可变Swift数组。但是,如果由于某种原因确实需要引用语义,可以像这样NSMutableArray

group.issues = NSMutableArray(array: temp.sortedArray(using: [sortDescriptor]))

你不能只是强制转换它的原因是因为Objective-C桥将一个Swift数组桥接到一个不可变的NSArray,如果你试图在它上面调用变异方法,它会引发异常。

同样,最好的办法是使用Swift数组,将issues属性声明为var

struct Group {
    ...

    var issues: [String] // or whatever type goes inside the array

    ...
}

然后将其指定为:

group.issues = temp.sortedArray(using: [sortDescriptor])

答案 1 :(得分:0)

Swift 5简便方法

let arrPicOne = temparrpicFind as! [Any]
let arrPicTwo = temparrpic as! [Any]
let picResult = arrPicOne + arrPicTwo

arrGpic = NSMutableArray(array:picResult)