无法将类型 'Swift._ContiguousArrayStorage<Swift.AnyObject>' 的值转换为'NSMutableArray'



我不小心将手机中的iOS版本从10.3.3更新到11.0.3。因此,我不得不将我的xcode升级到最新的9.1版本。现在,当我在xcode 9.1中运行我的代码时,它出现了

无法强制转换类型的值 "Swift._ContiguousArrayStorage"到"NSMutableArray"

似乎不再从"AnyObject"数组转换为"NSMutableArray"。但是我在整个代码中使用了这种转换。我花了将近一天的时间尝试使用 [[字符串:AnyObject]] 代替 [AnyObject],这不是一个好主意,因为它会影响整个代码,感觉就像我从头开始再次编写代码。任何人都可以提出更好的解决方案。?

使用

(MyAnyObjectArray! as NSArray).mutableCopy() as!NSMutableArray

而不是

MyAnyObjectArray as!NSMutableArray

当我使用 xcode 8.3.3 和 swift 3.2 时,使用 .mutableCopy() 很容易出错。但现在它看起来可以使用。有点困惑。:(

正如我只是在评论中看到的,我认为应该接受答案:

NSMutableArray(array: anyObjectArray)

SWIFT-4。

在 SWIFT 中对 NSARRAY 或 MUTABLEARRAY 进行排序

如果你有NSArray,那么它应该很容易完成。如果您有 NSMutableArray,请参考这个。

    var ary_country:NSMutableArray = []
    print("Before ",ary_country) //"A", "E", "D", "B"
    let sorted = ary_country.sorted {($0 as AnyObject).localizedStandardCompare($1 as! String) == .orderedAscending}
   ary_country =  (sorted as NSArray).mutableCopy() as! NSMutableArray
   print("After", ary_country) //"A", "B", "C", "D"

最新更新