2015-07-25 3 views
-1

Эй, я просто хочу сохранить свой NSMutableArray с классом. Но когда я пытаюсь прочитать файл, мое приложение становится раздавленным. Я нашел this, и я попытался преобразовать для NSMutableArray. Теперь я не могу понять, что я могу сделать.Сохраните NSMutableArray с классом в файл Plist в Swift

Мой класс:

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() 

и мой Read Код:

let documents = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String 
let customerPath = documents.stringByAppendingPathComponent("Test.plist") 

    ItemData = Customer.read(customerPath)! 

Когда я пытался читать IM получаешь эту аварию:

fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)

Любой совет?

+0

В чем ваш вопрос? В чем дело? Что происходит/не происходит? – luk2302

+0

Я обновил свой вопрос. –

+0

Вы пытались найти «неожиданно найденный нуль при развертывании необязательного значения»? Знаете ли вы, что это значит? Какая ценность была развязана силой и почему? –

ответ

0

Ваш код работает отлично, за исключением того, что на самом деле вам нечего читать с самого начала, поэтому Customer.read(customerPath) возвращает нуль, который вы пытаетесь распаковать - поэтому ошибка.

Если вы только что пишете что-то заранее, а затем попробуйте снова прочитать его, все будет хорошо.

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.

+0

Я пытался сохранить прежде, но он все тот же. В основном я сохраняю этот Customer.write (customerPath, content: ItemData). Но это не работает? На самом деле мой код записи неверен? –

+0

@ SalihÇiftçi Я могу заверить вас на 100%, что ваш код работает, я только что вложил его в детскую площадку и поиграл с ним, как на чтение, так и на запись. – luk2302

+0

Okey тогда. Почему он не работает в проекте? Почему это может быть? –

Смежные вопросы