ios - NSUserDefaults in swift 用于为 TableView 保存字符串数组

标签 ios arrays swift nsuserdefaults

你好,我有一个 tableview,这是我在 MyItemTableViewController 类中的代码

var itemList = [String]()

@IBAction func saveItemToList (segue: UIStoryboardSegue) {
    let AddNewItemViewController = segue.sourceViewController as! addItemTableViewController

    let name = AddNewItemViewController.itemName

    if name == "" {

    }
    else {
        itemList.append(name!)

        let indexToInsert = itemList.count == 0 ? 0 : itemList.count - 1

        let indexPath = NSIndexPath(forRow: indexToInsert, inSection: 0)

        tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
    }

}

我如何使用 NSUserDefaults 保存我的数组我尝试了一些方法但它对我不起作用。

最佳答案

你可以这样设置itemList数组。

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(itemList, forKey: "items")
defaults.synchronize()

当你需要从NSUserDefaults中提取时,你可以像这样提取它

let defaults = NSUserDefaults.standardUserDefaults()
if let items = defaults.objectForKey("items") as? [String] {
    print(items)
}

或者你也可以使用stringArrayForKey

if let items = defaults.stringArrayForKey("items") {
    print(items)
}

有关 NSUserDefaults 的更多详细信息,请阅读此 tutorial

编辑: 问题是你试图在 Sting 数组中添加 [String] 对象,这是不可能的,如果你想合并两个数组然后这样写.

if let items = defaults.stringArrayForKey("items") {
    self.itemList = self.itemList + items
}

关于ios - NSUserDefaults in swift 用于为 TableView 保存字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39181878/

相关文章:

ios - NSLayoutConstraint 没有成员 'Attribute'

ios - 警告 - 尝试在 Swift 中显示 UIAlertController null

ios - iPhone 智能应用横幅 - openUrl 未调用

ios - 如果在 iPhone 4+ 设备上创建应用程序,是否需要使用 @1x​​ 图像?

javascript - 对象数组返回最近日期的最高总值

c++ - std::cout << cstring;打印 cstring 元素的值,而不是 cstring 十六进制地址。为什么?

ios - CAReplicatorLayer 背后的魔力是什么?

ios - 在 UITableViewCell 中保存 UITextField 值的问题

java - 数组未在 Java/Android 中正确插入数据

ios - Xcode 运行脚本阶段中的沙盒问题