【发布时间】:2017-09-02 11:24:26
【问题描述】:
我对以下代码有疑问(我现在正在快速学习) 在行中添加元素时会发生这种情况
items.addObjects(from: [TextField.text!])
错误信息是:
2017-09-02 13:15:18.542629+0200 todolist[88230:154108272] *** 由于未捕获的异常而终止应用程序 'NSInternalInconsistencyException',原因:'-[__NSCFArray insertObject:atIndex:]: 变异方法发送到不可变对象'
我正在使用XCcode 9 Beta 5
这里是完整的部分代码
@IBOutlet weak var TextField: UITextField!
@IBAction func Action(_ sender: Any) {
let itemsObject = UserDefaults.standard.object(forKey: "items")
var items:NSMutableArray = []
if let tempItems = itemsObject as? NSMutableArray {
items = tempItems
items.addObjects(from: [TextField.text!])
} else {
items = [TextField.text!]
}
UserDefaults.standard.set(items, forKey: "items")
TextField.text = ""
}
【问题讨论】:
-
为什么是
NSMutableArray??您不能将对象转换为可变的 Foundation 类型。使用 Swift 类型,可以解决问题。在学习 Swift 时:千万不要在 Swift 中使用NSMutable...集合类型。