【问题标题】:Use userdefaults on a struct在结构上使用 userdefaults
【发布时间】:2018-02-20 09:11:33
【问题描述】:

我手动将数据输入到结构中。但是该结构不保存数据。我尝试使用 userdefaults 但它不起作用。如果数据在结构bad 中,我希望数据始终出现在标签benCarson 上。

视图控制器 1

struct bad {
    static var mm = [String]()
}

视图控制器 2

class ViewController2: UIViewController {
    @IBOutlet var benCarson: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        benCarson.text = ViewController.bad.mm.map { " \($0)" }.joined(separator:"\n")
    }
}

【问题讨论】:

  • Swift 的惯例是以大写字母开头的结构命名

标签: ios string struct swift3 nsuserdefaults


【解决方案1】:

我认为不需要 struct 只需使用 UserDefaults 就可以了

保存

let mm = ["adsa", "safds", "twer", "qwer", "dfas"]
let defaults = UserDefaults.standard
defaults.set(mm, forKey: "SavedStringArray")
defaults.synchronize()

用于检索

let defaults = UserDefaults.standard
let myarray = defaults.stringArray(forKey: "SavedStringArray") ?? [String]()
benCarson.text = myarray.map { " \($0)" }.joined(separator:"\n")

【讨论】:

  • 无需强制同步
  • 顺便说一句,Swift 是一种类型推断语言,使用 nil 合并运算符时无需指定数组类型。只需传递一个空数组?? [ ]
猜你喜欢
  • 2018-05-14
  • 1970-01-01
  • 2017-12-06
  • 2017-05-22
  • 1970-01-01
  • 2019-01-12
  • 2021-02-07
  • 2016-05-25
相关资源
最近更新 更多