- 我的 IOS-App 有 2 个目标:MYAPPTARGET_1 和 MYAPPTARGET_2
- MYAPPTARGET_1 正在使用 NSKeyedArchiver 将 Stream 写入 BLOB
- MYAPPTARGET_2 正在使用 NSKeyedUnarchiver 从 BLOB 中读取流
从我的 MYAPPTARGET_2 中的 BLOB 取消归档流时,我收到错误:016-01-18 15:01:38.541 WorldHistoryAtlasTest[598:9405] * 由于未捕获的异常“NSInvalidUnarchiveOperationException”而终止应用程序,原因:'* -[NSKeyedUnarchiver decodeObjectForKey:]: 无法为键(rootobject)解码类(MYAPPTARGET_1.MapTheme)的对象;
所以它似乎显然是用MYAPPTARGET_1的前缀编码的,并且不能从MYAPPARGET_2读取。
因此,我在另一个 STACKOVERFLOW 答案中得到了克服这个问题的提示,以使用委托解档器覆盖类名。但我无法实现这一点:
func unarchiver(unarchiver: NSKeyedUnarchiver, cannotDecodeObjectOfClassName name: String, originalClasses classNames: [String]) -> AnyClass? {
print("ClassName is " + name);
return nil; // WHAT TO DO , TO OVERWRITE THE CLASS NAME.
}
var mykeyedunarchiver:NSKeyedUnarchiver=NSKeyedUnarchiver(forReadingWithData: data!);
mykeyedunarchiver.delegate = self;
let temp=mykeyedunarchiver.decodeObjectForKey("rootobject")
我有一个目标名称为 MYAPPTARGET_1 的应用程序,我使用 NSKeyedArchiver 功能将一些数据存储为 blob。
然后稍后使用名为 MYAPPTARGET_2 的第二个 Apps-Target 尝试再次读取数据。从存储在 DB 中的 BLOB 加载。
如果有人能给我一个实用的提示,我会很高兴。