作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在将MyClass
拉入框架之前,我可以将MyClass
实例保存到Core Data中。
这是MyClass
的实现:
open class MyClass: NSObject, NSCoding {
required public init?(coder aDecoder: NSCoder) {
super.init()
stuffs = aDecoder.decodeObject(forKey: "stuff") as? [Stuff] ?? []
}
open func encode(with aCoder: NSCoder) {
aCoder.encode(stuffs, forKey: "stuffs")
}
}
MyClass
放入CocoaPods的框架中之后,我开始遇到这些崩溃:
CoreData: error: exception handling request: <NSSQLFetchRequestContext: 0x1c019d4d0> , *** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (MyClass) for key (NS.objects); the class may be defined in source code or a library that is not linked with userInfo of {
"__NSCoderInternalErrorCode" = 4864;
}
最佳答案
通过将此类移至框架中,您已经更改了其全名。之前是MyApp.MyClass
之类的东西,但现在是MyFramework.MyClass
。键控归档不知道它们是相同的,这就是导致您出现问题的原因。删除并重新安装可以解决问题,因为不再需要解码任何旧数据。
您可以使用setClass(:forClassName:
告诉取消归档的过程如何解决冲突,从而控制类/名称的匹配。你会做类似的事情
NSKeyedUnarchiver.setClass(MyClass.self, forClassName: "MyApp.MyClass")
NSKeyedArchiver.setClassName("MyApp.MyClass", for: MyClass.self)
关于ios - 导入为框架后,NSKeyedUnarchiver encodeObjectForKey崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45290063/
我在 SE 中的第一篇文章,所以请轻轻地对我....:) 我是 swift 和 iOS 开发的新手,但在过去几个月里一直在学习。 我有一个应用程序,用于通过 NSCoder 和 encodeObjec
我是一名优秀的程序员,十分优秀!