0

我正在尝试保存一个NSMutableArrayin CoreData。数组包含对象NSDictionary

NSDictionary 具有以下结构

valueDict = 
{
    FloorId = F0001;
    endCoordinates = "NSPoint: {541, 413}";
    linePath = "<UIBezierPath: 0x1d0903c0>";
    pointsOnLine =     (
    );
    startCoordinates = "NSPoint: {418, 504}";
},

要写入核心数据,我使用以下代码: parray is type BinaryData

points.parray = [NSKeyedArchiver archivedDataWithRootObject:self.locationsArray];

并检索我使用的价值

locationsArray = [NSKeyedUnarchiver unarchiveObjectWithData:points.parray];

当我尝试检索它时,出现以下错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSDictionary initWithObjects:forKeys:]: count of objects (0) differs from count of keys (5)'

我检查了 NSArray 和 NSDictionary 采用 NSCoding 协议。我在这里做错了什么?

4

1 回答 1

0

解决此问题的最佳方法是创建一个小型测试应用程序,或者在您的应用程序启动时调用一个测试方法。使用相同的键和类型创建一个典型的字典,尝试归档它,记录数据大小,然后立即尝试取消归档数据。假设它无法注释掉一个或多个键,直到剩下的工作正常。现在您知道了问题的关键,并且可以更好地确定问题所在。

于 2013-05-19T13:03:56.500 回答