2014-08-27 24 views
7

Attualmente sto cercando di modificare alcuni NSArrays in NSMutableArrays, tuttavia, poiché sono nuovo di Swift e Xcode, non capisco veramente gli errori e come risolverli.Conversione di NSArray in NSMutableArray in Swift

Questo è il codice che ho:

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

Io attualmente visualizzato l'errore: errore fatale: inaspettatamente trovato nulla, mentre scartare un valore opzionale

Inoltre, so che non dovrei davvero sto usando NSUserDefaults per questo scopo, ma trovo molto più semplice che usare un plist o dati core ecc ... Dal momento che è la mia prima app voglio solo mantenere le cose semplici.

risposta

24

Si sta meglio utilizzare questa sintassi per impostare le variabili

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

funziona perfettamente. Molte grazie! – user3746428

16

Anche solo per convertire NSArray a NSMutableArray a Swift:

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

var myNewName = NSMutableArray(array:name)

+1

questo è più pulito dell'utilizzo di mutableCopy() – Adamski