gpt4 book ai didi

objective-c - NSKeyedUnarchiver 无法解码类 NSKnownKeysDictionary1 的对象

转载 作者:IT王子 更新时间:2023-10-29 05:50:35 25 4
gpt4 key购买 nike

在使用 Swift 时尝试取消存档时出现以下异常:

Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (NSKnownKeysDictionary1) for key (NS.objects); the class may be defined in source code or a library that is not linked'

上下文:我正在创建一个“共享链接”扩展。在我的主应用程序(用 Objective C 编写)中,我使用 MMWormhole 编写了一个字典数组,其中包含有关链接的信息。

    NSFetchRequest* bookmarkFetch = [NSFetchRequest fetchRequestWithEntityName:@"XX"];
bookmarkFetch.propertiesToFetch = @[
@"name", @"text", @"date", @"url"
];
bookmarkFetch.resultType = NSDictionaryResultType;
NSArray* bookmarks = [moc executeFetchRequest:bookmarkFetch error:NULL];

[wormhole passMessageObject:bookmarks identifier:@"XXX"];

数组中的值是 NSStrings 和一个 NSDate。

在 MMWormhole 的内部你会得到:

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:messageObject];

messageObject 只是书签数组,没有任何中间处理。

在我的扩展中:

    let wormhole = MMWormhole(applicationGroupIdentifier: "group.XX", optionalDirectory:nil)
let bookmarks = wormhole.messageWithIdentifier("XXX") as? Array<Dictionary<String,AnyObject>>

messageWithIdentifier: 最终调用它:

    id messageObject = [NSKeyedUnarchiver unarchiveObjectWithData:data];

数组已正确写入应用程序组文件夹——我可以使用另一个用 Objective C 编写的扩展来读取它。

当我在模拟器中运行时出现此异常。当在 32 位设备(iPhone 5 和 iPad 3)上运行时,代码似乎可以正常工作。我目前没有要测试的 64 位设备。

我想我缺少一个 import 或一个框架,但是是哪个?

最佳答案

这只是一个旁注:

您可以为 NSKeyedArchiverNSKeyedUnarchiver 设置类名。我根本没有处理 CoreData 就遇到了这个问题。 unarchiver 没有找到我自己的类(class)了。

为我的类(class)设置 className 如下所示:

对于归档器:

NSKeyedArchiver.setClassName("MyClass", for: MyClass.self)
let data = NSKeyedArchiver.archivedData(withRootObject: root)

unarchiver:

NSKeyedUnarchiver.setClass(MyClass.self, forClassName: "MyClass")
let root = NSKeyedUnarchiver.unarchiveObject(with: data)

关于objective-c - NSKeyedUnarchiver 无法解码类 NSKnownKeysDictionary1 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33015794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com