将一组按钮保存到NSUserDefaults swift

时间:2016-04-06 05:20:57

标签: arrays swift uibutton nsuserdefaults

正如标题所说。这可能吗?继承我的代码:

离开视图时......

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    defaults.setObject(buttonArray, forKey: "buttonArray")
    defaults.synchronize()
}

进入......

override func viewDidLoad() {
    super.viewDidLoad()

    if let isAppAlreadyLaunchedOnce = defaults.stringForKey("isAppAlreadyLaunchedOnce") {
        print("View already launched")

        let savedArray = defaults.arrayForKey("buttonArray")
        buttonArray = savedArray as! [UIButton]
    } else {
        print("View launched first time")        
        buttonArray = (button1, button2, button3, button4)
    }

    //rest of code where button array gets changed
}

在调用prepareForSegue时收到错误SIGNAL SIGABRT

1 个答案:

答案 0 :(得分:0)

你不能这样做。用户默认值是属性列表,您只能在其中存储以下类型(数组和字典也只能包含这些类型):

– NSArray
– NSData
– NSDictionary
– NSNumber
– NSString`

您可以考虑将按钮编码为NSData,但在我看来这是一个糟糕的设计。用户默认值应该用于应用程序重新启动后应该保留的用户首选项。您需要重新创建这些按钮的哪些信息?是否需要在应用程序被杀后或仅在您重新进入此屏幕时才能工作?