Swift - NSMutableArray 中的 NSKeyedUnarchiver unarchiveObjectWithData
Posted
技术标签:
【中文标题】Swift - NSMutableArray 中的 NSKeyedUnarchiver unarchiveObjectWithData【英文标题】:Swift - NSKeyedUnarchiver unarchiveObjectWithData in NSMutableArray 【发布时间】:2015-01-20 15:00:53 【问题描述】:var objects: AnyObject? = NSKeyedUnarchiver.unarchiveObjectWithData(data)
如何将对象变成 NSMutableArray ?我归档了 NSMutableArray。
【问题讨论】:
【参考方案1】:只需将结果向下转换为NSMutableArray
:
if let objects = NSKeyedUnarchiver.unarchiveObjectWithData(data) as? NSMutableArray
// ...
else
// failed
如果归档对象是(不可变的)NSArray
,那么您必须创建一个可变的
复制:
if let array = NSKeyedUnarchiver.unarchiveObjectWithData(data) as? NSArray
let objects = NSMutableArray(array: array)
// ...
【讨论】:
@BogdanBogdanov:奇怪,我测试过了。您确定归档对象是 mutable 数组吗?它适用于as? NSArray
吗?
ops 不,它不是 NSMutableArray.. 抱歉我的错误它有效 :)
在我看来,投射到[AnyObject?]
会更“迅速”。我对将 NSMutableArray 设置为 let
时会发生什么感兴趣,因为您无法更改 let
.. 因此将其设为 NSArray
@DougMead:NSMutableArray 是一个引用类型。即使您使用let
分配它,您也可以修改引用的(可变)数组。它不会使它成为一个 NSArray。
这是有道理的。我想我将语法糖与实际分配 NSMutableArray 引用混淆了。我绝对记得看到 let 创建 NSArrays 和 var 快速创建 NSMutableArrays .. 我的假设是否正确?以上是关于Swift - NSMutableArray 中的 NSKeyedUnarchiver unarchiveObjectWithData的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 8.3 和 Swift 3:在 UICollectionView 中的单元格中显示图像,从 URL 获取并存储在 NSMutableArray
如何将 NSMutableArray 转换为 Swift 数组?
在 Swift 中为 Objective C 函数提供 NSMutableArray 类型
Swift 3 UserDefaults 设置 NSMutableArray
swift Swift Strings的扩展函数,它将接受NSMutableArray参数
swift : 使用 NSPredicate 过滤 NSMutableDictionary 的 NSMutableArray