如标题所示。这可能吗?这是我的代码:
当离开视图时...
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
最佳答案
你不能那样做。用户默认值是一个属性列表,您只能在其中存储以下类型(数组和字典也只能包含这些类型):
– NSArray
– NSData
– NSDictionary
– NSNumber
– NSString`
您可以考虑将按钮编码为NSData,但这在我看来是不好的设计。应将用户默认值用于用户首选项,该首选项应在重新启动应用程序后保留。重新创建这些按钮到底需要什么信息?在应用终止后还是仅在您重新进入此屏幕后才需要工作?