【发布时间】:2018-01-08 09:24:57
【问题描述】:
我的要求是用户必须浏览上次访问的页面,所以
我正在尝试将 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.'
如果这是错误的,请建议我正确的实现方法。 因为我有非常复杂的导航流程。
【问题讨论】:
-
崩溃与您根据日志保存数组无关
-
@kapsym NO 它正在与相同的日志崩溃
-
@kapsym 你想让我把整个堆栈跟踪吗?
-
我想在这种情况下只支持 RGBA 或白色颜色空间。如果 Apple 在他们的崩溃日志中给你提示,那将非常有帮助......
-
@MikeAlter 如果您只想保存用户上次所在的 VC,您可以只保存标识符。有什么理由将整个 Viewcontrollers 保存为用户默认值?
标签: ios objective-c arrays swift3 nsuserdefaults