我的要求是用户必须浏览上次访问过的页面
我正在尝试将 UIViewController 的数组保存到 NSUserDefault ,但应用每次都会崩溃
let array = self.navigationController?.viewControllers
UserDefaults.standard.set(array, forKey: "LastNavigationArray")
对于此尝试崩溃是
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to insert non-property list object (
另外,我尝试使用以下代码,但没有运气
let array = self.navigationController?.viewControllers
let encodedData = NSKeyedArchiver.archivedData(withRootObject: array)
UserDefaults.standard.set(encodedData, forKey: "LastNavigationArray")
这次崩溃是
Assertion failure in -[UICGColor encodeWithCoder:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3600.7.47/UIColor.m:1549
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Only RGBA or White color spaces are supported in this situation.'
如果这是错误的,请告诉我正确的实施方法。 因为我有非常复杂的导航流程。
答案 0 :(得分:1)
UIViewControllers是在UserDefaults中保存的重物。
您可以为自己保留一个自定义对象,以识别导航堆栈中的所有视图控制器。例如,您可以使用每个视图控制器的类名字符串构造自定义字符串。或者,更好的选择是仅在用户默认值中存储最后一个视图控制器的类名。当用户再次打开您的应用程序时,您可以通过检查类名来实例化并呈现该视图控制器。