Я создал две функции, называемые save array и retrieve array, и их задача заключается в сохранении и извлечении массива с телефона. Моя проблема в том, что они не работают. Это две функции.Извлечение функции массива не работает
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 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)
Но по какой-то неизвестной причине, когда я запускаю тестовую площадку, подобную приведенной ниже, она отлично работает:
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)
Не обижайтесь, но ваш код очень трудно читать. Согласно руководящим принципам именования Apple, переменные и методы должны начинаться с строчной буквы. Даже синтаксический ярлык SO запутан. – vadian
Не приняты. Я хорошо знаю, что мой код трудно читать, это просто привычка. Однако я не вижу, как синтаксис highlighter запутан. @vadian – needshelp
Просто шучу, я имею в виду, что такие функции, как 'encodeWithCoder' или переменные типа' example', не выделяются. – vadian