2014-08-27 96 views
7

我當前正在嘗試將一些NSArrays更改爲NSMutableArrays,但由於我是Swift和Xcode的新手,我不太瞭解這些錯誤以及如何解決這些錯誤。在Swift中將NSArray轉換爲NSMutableArray

這是我的代碼:

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 2014-08-27 23:03:27

16

也只是NSArray的轉換爲NSMutableArray的斯威夫特:完美

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

var myNewName = NSMutableArray(array:name)

+1

這比使用mutableCopy()更清潔 – Adamski 2015-09-20 09:22:51