检索数组功能不起作用
Retrieve array function not working
我创建了两个名为保存数组和检索数组的函数,它们的工作是从 phone 中保存和检索数组。我的问题是他们不工作。这是两个函数。
func SaveArray (array: [IOU],fileID: String){
NSKeyedArchiver.archiveRootObject(array, toFile: fileID)
}
func RetrieveArray (fileID: String, var array: [IOU]) -> [IOU]{
if let arraytoRetrieve = NSKeyedUnarchiver.unarchiveObjectWithFile(fileID) as? [IOU]{
array = arraytoRetrieve
}
return array
}
IOU是一个class我是这样定义的:
class IOU : NSObject, NSCoding {
var Amount : Double
var Payer : String
var Description : String
init (amount: Double, payer: String, description: String){
self.Amount = amount
self.Payer = payer
self.Description = description
super.init()
}
required convenience init(coder decoder: NSCoder){
let amount = decoder.decodeDoubleForKey("amount")
let payer = decoder.decodeObjectForKey("payer") as! String
let description = decoder.decodeObjectForKey("description") as! String
self.init(amount: amount,payer: payer,description: description)
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeDouble(self.Amount, forKey: "amount")
aCoder.encodeObject(self.Payer, forKey: "payer")
aCoder.encodeObject(self.Description, forKey: "description")
}
}
我在 viewWillAppear 方法中实现了检索函数,如下所示:
Debts = RetrieveArray("Debts", array: Debts)
但由于某些未知原因,当我 运行 像下面这样的 playground 测试时,它工作得很好:
var IOUArray : [IOU] = [IOU]()
var example = IOU(amount: 70, payer: "Jackson", description: "Because")
IOUArray.append(example)
func SaveArray (array: [IOU],fileID: String){
NSKeyedArchiver.archiveRootObject(array, toFile: fileID)
}
func RetrieveArray (fileID: String) -> [IOU]{
let IOUA = NSKeyedUnarchiver.unarchiveObjectWithFile(fileID) as! [IOU]
return IOUA
}
SaveArray(IOUArray, fileID: "IOUArray")
RetrieveArray("IOUArray")
print(RetrieveArray("IOUArray")[0].Amount)
方法archiveRootObject
中参数toFile
的值和unarchiveObjectWithFile
中的参数必须是有效的文件路径..
archiveRootObject
returns true
如果操作成功,否则false
我创建了两个名为保存数组和检索数组的函数,它们的工作是从 phone 中保存和检索数组。我的问题是他们不工作。这是两个函数。
func SaveArray (array: [IOU],fileID: String){
NSKeyedArchiver.archiveRootObject(array, toFile: fileID)
}
func RetrieveArray (fileID: String, var array: [IOU]) -> [IOU]{
if let arraytoRetrieve = NSKeyedUnarchiver.unarchiveObjectWithFile(fileID) as? [IOU]{
array = arraytoRetrieve
}
return array
}
IOU是一个class我是这样定义的:
class IOU : NSObject, NSCoding {
var Amount : Double
var Payer : String
var Description : String
init (amount: Double, payer: String, description: String){
self.Amount = amount
self.Payer = payer
self.Description = description
super.init()
}
required convenience init(coder decoder: NSCoder){
let amount = decoder.decodeDoubleForKey("amount")
let payer = decoder.decodeObjectForKey("payer") as! String
let description = decoder.decodeObjectForKey("description") as! String
self.init(amount: amount,payer: payer,description: description)
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeDouble(self.Amount, forKey: "amount")
aCoder.encodeObject(self.Payer, forKey: "payer")
aCoder.encodeObject(self.Description, forKey: "description")
}
}
我在 viewWillAppear 方法中实现了检索函数,如下所示:
Debts = RetrieveArray("Debts", array: Debts)
但由于某些未知原因,当我 运行 像下面这样的 playground 测试时,它工作得很好:
var IOUArray : [IOU] = [IOU]()
var example = IOU(amount: 70, payer: "Jackson", description: "Because")
IOUArray.append(example)
func SaveArray (array: [IOU],fileID: String){
NSKeyedArchiver.archiveRootObject(array, toFile: fileID)
}
func RetrieveArray (fileID: String) -> [IOU]{
let IOUA = NSKeyedUnarchiver.unarchiveObjectWithFile(fileID) as! [IOU]
return IOUA
}
SaveArray(IOUArray, fileID: "IOUArray")
RetrieveArray("IOUArray")
print(RetrieveArray("IOUArray")[0].Amount)
方法archiveRootObject
中参数toFile
的值和unarchiveObjectWithFile
中的参数必须是有效的文件路径..
archiveRootObject
returns true
如果操作成功,否则false