嘿,我只想用Class保存我的NSMutableArray。但是当我尝试阅读文件时,我的应用程序正在粉碎。我找到了this,我试图转换为NSMutableArray。现在我无法弄清楚我能做些什么。
我的班级:
class Customer {
var name = String()
var email = String()
var phoneNumber = Int()
var bAdd = String()
var bAdd2 = String()
var sAdd = String()
var sAdd2 = String()
init(name: String, email: String, phoneNumber: Int, bAdd: String, bAdd2: String, sAdd: String, sAdd2: String) {
self.name = name
self.email = email
self.phoneNumber = phoneNumber
self.bAdd = bAdd
self.bAdd2 = bAdd2
self.sAdd = sAdd
self.sAdd2 = sAdd2
}
class func exists (path: String) -> Bool {
return NSFileManager().fileExistsAtPath(path)
}
class func read (path: String) -> NSMutableArray? {
if Customer.exists(path) {
return NSMutableArray(contentsOfFile: path)!
}
return nil
}
class func write (path: String, content: NSMutableArray) -> Bool {
return content.writeToFile(path, atomically: true)
}
}
我的阵列:
var ItemData:NSMutableArray = NSMutableArray()
和我的阅读代码:
let documents = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
let customerPath = documents.stringByAppendingPathComponent("Test.plist")
ItemData = Customer.read(customerPath)!
当我试图阅读im gettin时,这次崩溃:
致命错误:在展开Optional值时意外发现nil (LLDB)
任何建议?
答案 0 :(得分:0)
你的代码完全正常,除了你实际上没有任何东西可以从头开始读取,因此Customer.read(customerPath)
返回nil,你试图解包 - 因此错误。
如果你事先写一些东西,然后再尝试再读一遍,那么一切正常。
ItemData.addObject("aisnd")
Customer.write(customerPath, content: ItemData)
ItemData = Customer.read(customerPath)!
当然,这并不是实际做到这一点的方法,因为在开始时你没有任何东西是正常的。因此,您必须检查read
函数是否实际返回有用的内容:
var ItemData:NSMutableArray = NSMutableArray()
if let item = Customer.read(customerPath) {
ItemData = item
} else {
print("no value found")
}
最后的注释1因为游乐场建议:从!
移除as! String
。最后的注释2:不要将变量名称设为大写,变量应该被称为itemData
。
修改强>
要编写Customer
个对象,您必须执行this之类的操作。