2014-08-27 6 views
7

В настоящее время я пытаюсь изменить несколько NSArrays в NSMutableArrays, но поскольку я новичок в Swift и Xcode, я действительно не понимаю ошибки и как их исправлять.Преобразование NSArray в NSMutableArray в Swift

Это код, у меня есть:

var names: NSMutableArray = [] 
var dates: NSMutableArray = [] 
var values: NSMutableArray = [] 
var images: NSMutableArray = [] 

override func viewWillAppear(animated: Bool) { 
    self.tableView.reloadData() 

    if enterButtonTapped == false { 
     addTransactionButton.enabled = false 
    } else { 
     addTransactionButton.enabled = true 
    } 

    var tempNames: NSArray = NSUserDefaults.standardUserDefaults().arrayForKey("names")! 
    var tempDates: NSArray = NSUserDefaults.standardUserDefaults().arrayForKey("dates")! 
    var tempValues: NSArray = NSUserDefaults.standardUserDefaults().arrayForKey("values")! 
    var tempImages: NSArray = NSUserDefaults.standardUserDefaults().arrayForKey("images")! 

    names = tempNames.mutableCopy() as NSMutableArray 
    dates = tempDates.mutableCopy() as NSMutableArray 
    values = tempValues.mutableCopy() as NSMutableArray 
    images = tempImages.mutableCopy() as NSMutableArray 

    println(names) 
    println(dates) 
    println(values) 
    println(images) 
} 

В настоящее время я получаю ошибку: фатальная ошибка: неожиданно нашли ноль в то время как разворачивание необязательное значение

Кроме того, я знаю, что я не должен для этой цели действительно использую NSUserDefaults, но я нахожу это проще, чем использование plist или Core Data и т. д. Поскольку это мое первое приложение, я просто хочу, чтобы все было просто.

ответ

24

Вы лучше использовать этот синтаксис для установки переменных

if let tempNames: NSArray = NSUserDefaults.standardUserDefaults().arrayForKey("names") { 
    names = tempNames.mutableCopy() as NSMutableArray 
} 
+0

прекрасно работает. Большое спасибо! – user3746428

16

Кроме того, только для преобразования NSArray в NSMutableArray в Swift:

let name: NSArray = ["John","Jake","Tom"]

var myNewName = NSMutableArray(array:name)

+1

это чище, чем использование mutableCopy() – Adamski

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