奇怪的事 我将Array存储在核心数据的属性中,
当我在iPhone(iphone 6s)上运行应用程序时,表明一切正常
但是当我关闭不会在后台运行的应用时,
并再次打开应用程序,数组是空的!
我在xcode的模拟器上做了同样的事情,一切都很棒!
是什么原因?
我将数组保存在这样的属性类型中 - 二进制数据
这段代码:
-(void)viewWillAppear:(BOOL)animated
{
self.arr = [NSKeyedUnarchiver unarchiveObjectWithData:[_obj2 valueForKey :@"arrayDataEvent"]];
if(self.arr==nil)
{
self.arr=[[NSMutableArray alloc]init];
}
}
-(void)save//button
{
if (self.obj2)//obj2 is a specific NSManagedobject from another controller table view
{
NSString*str=[NSString stringWithString:_textView.text];
[self.arr addObject:str];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.arr];
[_obj2 setValue:data forKey:@"arrayDataEvent"];
NSMutableArray*arr2 = [NSKeyedUnarchiver unarchiveObjectWithData:[_obj2 valueForKey :@"arrayDataEvent"]];
NSLog(@" arr = %@",arr2 );
}
[self.navigationController popViewControllerAnimated:YES];
}
答案 0 :(得分:0)
Core Data不是一个适合存储数组的框架。 IMO,您应该选择以下两个选项之一:
NSUserDefaults
,它似乎更符合您的要求。至于您的具体问题:您显然不是保存您的托管对象上下文。数据不会写入商店,并且在您重新启动应用程序时将无法使用。
do { try context.save() } catch { print("Couln't save.") }