1

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

无法将“Swift._ContiguousArrayStorage”类型的值转换为“NSMutableArray”

似乎不再有从“AnyObject”数组到“NSMutableArray”的转换。但是我在整个代码中都使用了这种转换。我花了将近一天的时间尝试使用 [[String : AnyObject]] 而不是 [AnyObject] 这不是一个好主意,因为它会影响整个代码,感觉就像我从头开始重新编写代码一样。谁能建议一个更好的解决方案。?

4

3 回答 3

7

通过使用解决了它

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

代替

MyAnyObjectArray 为!NSMutableArray

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

于 2017-11-02T04:02:18.160 回答
1

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

NSMutableArray(array: anyObjectArray)
于 2019-03-03T21:40:59.893 回答
0

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"
于 2018-01-02T05:40:46.660 回答