2014-08-27 97 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