Swift 无法将NSSingleObjectArray类型的值强制转换为NSMutableArray

Swift 无法将NSSingleObjectArray类型的值强制转换为NSMutableArray,swift,ios10,Swift,Ios10,自iOS10以来,我面临着这个问题: 无法将类型为“\uu NSSingleObjectArrayI”的值强制转换为 “NSMutableArray” 这是我的代码: manage.POST( url, parameters: params, constructingBodyWithBlock: { (data: AFMultipartFormData!) in //Some stuff here

自iOS10以来,我面临着这个问题:

无法将类型为“\uu NSSingleObjectArrayI”的值强制转换为 “NSMutableArray”

这是我的代码:

manage.POST( url, parameters: params,
                     constructingBodyWithBlock: { (data: AFMultipartFormData!) in
                        //Some stuff here
            },
                     success: { (operation: NSURLSessionDataTask?, responseObject: AnyObject?) in

                         var array : NSMutableArray!

                        if AppConfig.sharedInstance().OCR == "2"{
                            let dictionnary = responseObject as! NSDictionary
                            array = dictionnary["data"]! as! NSMutableArray
                        }else{
                            //!!!!CRASH HERE!!!!!     
                            array  = responseObject as! NSMutableArray
                        }
                        //Some stuff after
}
当我查找responseObject值时,我的控制台中有:

Printing description of responseObject:
▿ Optional<AnyObject>
  ▿ Some : 1 elements
    - [0] : Test     
打印响应对象的说明:
▿ 可选的
▿ 一些:1个要素
-[0]:测试
如何从responseObject中提取值“Test”


非常感谢

发生崩溃是因为您假设接收的对象是
NSMutableArray
,即使该对象是在代码之外创建的

在本例中,代码获取的数组是为处理单个元素而优化的数组的实例;这就是演员阵容失败的原因

发生这种情况时,可以创建对象的可变副本:

array = (dictionnary["data"]! as! NSArray).mutableCopy() as! NSMutableArray


当我们处理来自web服务器的响应时,我们不能确定对象和类型。因此,最好根据需要检查和使用对象。请参阅以获取与您的问题相关的参考资料

if let dictionnary : NSDictionary = responseObject as? NSDictionary {

     if let newArr : NSArray = dictionnary.objectForKey("data") as? NSArray {

             yourArray = NSMutableArray(array: newArr)
      }

}

通过这种方式,你的应用程序将永远不会崩溃,因为它对于你需要的对象来说是完全有条件的,需要检查类型。如果您的“数据”键是数组,那么只有它才能为您的数组继续。谢谢。

一如既往,不要在SWIFT中使用可变基础集合类型。弊大于利。
if let dictionnary : NSDictionary = responseObject as? NSDictionary {

     if let newArr : NSArray = dictionnary.objectForKey("data") as? NSArray {

             yourArray = NSMutableArray(array: newArr)
      }

}