无法转换类型的价值&#39; Swift._ContiguousArrayStorage <swift.anyobject>&#39;到&#39; NSMutableArray&#39;

时间:2017-11-02 03:39:31

标签: ios swift xcode nsmutablearray anyobject

我意外地将手机中的iOS版本从10.3.3更新为11.0.3。因此,我必须将我的xcode升级到最新的9.1版本。现在当我在xcode 9.1中运行我的代码时,它出现了

  

无法转换类型的值   &#39; Swift._ContiguousArrayStorage&#39;到&#39; NSMutableArray&#39;

似乎不再有来自AnyObject&#39; AnyObject&#39;数组到&#39; NSMutableArray&#39;。但我在整个代码中都使用了这种转换。我花了将近一天的时间尝试使用[[String:AnyObject]]而不是[AnyObject]这不是一个好主意,因为它影响整个代码,感觉就像我从头开始重新编写代码。任何人都可以建议一个更好的解决方案。

3 个答案:

答案 0 :(得分:5)

使用

解决了这个问题
  

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

而不是

  

MyAnyObjectArray为!的NSMutableArray

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

答案 1 :(得分:1)

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

NSMutableArray(array: anyObjectArray)

答案 2 :(得分: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"