iphone - NSArray 到 NSData 用于核心数据

标签 iphone objective-c ios core-data

我需要将数组保存在核心数据中,所以我读到我可以使用 NSData 。所以我认为存档有问题。

NSMutableArray *newArray = [[NSMutableArray alloc]init];
NSData *newData = [NSKeyedArchiver archivedDataWithRootObject:newArray];
[myEntity setValue:newData forKey:@"nameOfMyData"];

然后我尝试在另一个 VIewController 中选择我的数组进行填充
NSData *newdata = [NSData dataWithData:self.myEntity.nameOfMyData];
NSMutableArray *photoArray = [[NSMutableArray alloc]init];
photoArray = [NSKeyedUnarchiver unarchiveObjectWithData:newdata];

我没有崩溃,但在命令行中出现下一个:
[NSKeyedUnarchiver initForReadingWithData:]: data is empty; 
did you forget to send -  finishEncoding to the NSKeyedArchiver?

当我尝试将对象添加到我的数组时,它不会添加
[photoArray addObject:myImage];

所以 myImage 正在创建并且我没有问题,但在调试器中总是为 photoArray 编写:
photoArray = (NSMutableArray*) 0x00000000 0 objects

最佳答案

它应该工作。但是在取消归档数组时,请使用:

NSData *newdata = [NSData dataWithData:self.myEntity.nameOfMyData];
NSMutableArray *photoArray = [NSMutableArray arrayWithArray: [NSKeyedUnarchiver unarchiveObjectWithData:newdata]];

您的数组中有不符合 NSCoding 协议(protocol)的对象,或者您没有保存核心数据上下文(或保存不成功)。

存档后
NSData *newData = [NSKeyedArchiver archivedDataWithRootObject:newArray];

当您检查 newData 是否为零时,您会看到什么?我想它是零。

关于iphone - NSArray 到 NSData 用于核心数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13920377/

相关文章:

ios - 变换使 UIView 在 iPhone 6 设备上消失

iphone - 在 iPhone 应用程序中编辑 PDF

iphone - 为什么 iPhone 上的纹理图像需要具有二维幂?

ios - 如何在标签栏 Controller 中嵌入 Split View Controller ?

ios - SwipeGestureRecognizer 滑动速度超过阈值时调用函数

iphone - 在 appDelegate 中获取用户位置

ios - iOS QuickAction 的 Objective-C 代码

objective-c - Objective-C中如何在不使用键盘的情况下按下键盘上的按键?

ios - 自动将 HTML <img> 从 WKWebView 保存到应用程序的 tmp 目录

ios - 分隔线问题 - 具有不同高度的 uitableview 单元格