在Swift中将NSArray转换为NSMutableArray

9

我目前正在尝试将一些NSArrays更改为NSMutableArrays,但由于我是Swift和Xcode的新手,我不太理解错误以及如何修复它们。

以下是我的代码:

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

我目前遇到的错误是:致命错误:在解包可选值时意外地找到了nil

此外,我知道我不应该真的使用NSUserDefaults来实现这个目的,但是我发现它比使用plist或Core Data等要简单得多......由于这是我的第一个应用程序,我只想保持简单。

2个回答

28

使用这种语法设置变量会更好。

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

完美运行。非常感谢! - user3746428

20

同样,要将NSArray转换为NSMutableArray在Swift中:

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

 var myNewName = NSMutableArray(array:name)

1
这比使用mutableCopy()更加简洁。 - Adamski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接