43得票5回答
当原始类不可用时,我该如何解码一个对象?

我有一个iOS 7应用程序,可以将自定义对象作为文件保存到应用的iCloud文档文件夹中。为此,我使用NSCoding协议。@interface Person : NSObject <NSCoding> @property (copy, nonatomic) NSStri...

34得票4回答
Swift中防止NSKeyedUnarchiver.decodeObject崩溃的唯一方法是什么?

NSKeyedUnarchiver.decodeObject如果原始类未知,将导致崩溃/SIGABRT。目前我所见到的唯一解决方法可以追溯到Swift早期的历史,需要使用Objective C(也是在Swift 2实现guard,throws,try和catch之前)。我可以找出Objecti...

31得票7回答
使用NSKeyedUnarchiver的unarchivedObject(ofClass:from:)方法解压缩数组

自从升级到Swift 4.2以来,我发现许多NSKeyedUnarchiver和NSKeyedArchiver方法已经被弃用,我们现在必须使用类型方法static func unarchivedObject<DecodedObjectType>(ofClass: DecodedOb...

21得票5回答
如何使用NSKeyedUnarchiver.unarchiveObject进行解档

我有一段工作的代码,但它已经过时了: 这部分是好的: let archived = try? NSKeyedArchiver.archivedData(withRootObject: [defaultRecord] as NSArray, requiringSecureCoding: fal...

21得票2回答
NSKeyedUnarchiver - 需要使用try/catch吗?

据我所知,不推荐使用 @try/@catch 块,因为只有在无法恢复的灾难性错误时才应抛出 exceptions 异常(请参考这个由@bbum提供了详细答案的讨论:iOS中的异常处理)。 所以我查看了我的代码,并发现了一个我不知道如何消除的@try/@catch块:NSData *fileD...

13得票4回答
Swift: NSCoding解码对象始终为nil

我在编写一个名为Packet的对象并通过Multipeer连接发送到另一侧时,出现了以下代码。然而,每当它尝试解码编码的对象时,就会出现以下错误。 class Packet : NSObject, NSCoding { var tmp1: Double = 0 var tmp2: ...

12得票3回答
无法解码类为“Employee”的对象,键为(NS.object.0);该类可能在未连接的源代码或库中定义。

我试图通过序列化数组将iPhone中的“员工”对象数组传递到Apple Watch:NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:employees]; 并将其作为手表端的反序列化:NSMutableAr...

11得票3回答
如何在NSKeyedUnarchiver中使用委托?

我正在使用NSKeyedUnarchiver解档对象,并希望使用代理(NSKeyedUnarchiverDelegate),但是我的代理没有被调用。编码和解码工作正常,但代理(unarchiver和unarchiverDidFinish)没有被调用。有人能帮忙吗?我有以下实现: ...

9得票6回答
重命名Xcode项目后NSKeyedUnarchiver错误

我刚刚重命名了我的Xcode项目,当我运行它时,我遇到了这个错误: 2015-11-14 05:32:42.337 Buck Tracker[3537:1456100] *终止应用程序,由于未捕获异常 'NSInvalidUnarchiveOperationException', 原因: ...

8得票4回答
解码存档数据时返回nil和不正确的格式

我已经为NSUserDefaults添加了类别方法来存储和检索编码对象(在这种情况下,是NSArray)。 我遇到了检索编码数据的问题。 这是我的代码: - (void)encodeObject:(id<NSCoding>)object forKey:(NSString *)ke...