【问题标题】:Issue with reading stored array from UserDefaults in Swift 3从 Swift 3 中的 UserDefaults 读取存储数组的问题
【发布时间】:2017-05-10 07:06:40
【问题描述】:

我正在尝试将Int 添加到一个空的Array,然后将其数据与UserDefaults 一起存储,然后读取它 ,这就是我正在做的事情:

//create an empty array
var intArray = [Int]()


func addToBookMark(Number:Int) {

    //Add object to array and save it
    intArray.append(Number)

    UserDefaults.standard.set(intArray, forKey: "bookmark")
    UserDefaults.standard.synchronize()


    //Read it
    let array = UserDefaults.standard.array(forKey: "bookmark")  as? [Int] ?? [Int]()
    print(array.description)

}

//Calling the method :
addToBookMark(Number: 30)

问题是编译器给了我一个空数组:[]我的问题是什么?

【问题讨论】:

  • 你是在模拟器还是游乐场签到?
  • @SivajeeBattina 游乐场
  • 您编写的代码在模拟器或操场上不起作用。签入设备。从用户默认值存储/获取数组的语法从 swift 3.0 更改
  • 如果你想让它在模拟器和操场上也能工作,你需要使用 NSKeyedArchiver 归档数组并存储它。
  • 你的代码没问题

标签: ios arrays swift xcode nsuserdefaults


【解决方案1】:

你的代码很完美,是模拟器的问题。所以最好尝试重新启动你的 Mac。

WWDC Seed:运行多个 iOS 模拟器会导致 NSUserDefaults 不工作

运行 iOS 8 或 9 模拟器,然后运行 ​​iOS 10 模拟器将 导致 NSUserDefaults 在模拟器中停止工作。这可以是 通过重新启动主机 Mac 解决。

在 Playground 的情况下,有一个 radar 与它有关,因为它无法在其上运行,因为 Playground 无法访问沙盒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多