我正在尝试使用 NSData 将数组保存到核心数据中,但我的 ManagedObjectContext 说有 0 个对象,当我调用它时,它显示为 NULL。我有一个名为 Event 的实体和其中的 3 个属性(chatArray,...,...)。我已经尝试了 11 个小时,但无法弄清楚。我相信我设置错了,因为 NSData 是正确的。我应该如何设置这个???
更新
我正在开发一个聊天应用程序,并且我在表格视图中有聊天消息(它是一个数据数组)。当您退出应用程序并重新加载它时,我需要保存所有聊天记录。我将消息作为字符串输入,并将其添加到表格的数组中。如果我没有做一个数组,我将消息作为文本字符串添加到核心数据中,当你重新加载应用程序时,我如何将它们添加到表格视图的数组中?
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain) NSManagedObject *managedObject;
//
NSArray *array = [[[NSArray alloc]initWithObjects:@"one",@"two",@"three", nil]autorelease];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
NSLog(@"data %@",data);
NSLog(@"Array %@",[NSKeyedUnarchiver unarchiveObjectWithData:data]);
[(Event*)managedObject setValue:data forKey:@"chatArray"];
if ([self managedObject])
{
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]];
[(Event *)managedObject setChatArray:data]; }
else {
Event *event = [[[Event alloc] initInsertingIntoManagedObjectContext:managedObjectContext]autorelease];
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]];
[event setChatArray:data];
}
NSError *error;
[managedObjectContext save:&error];
NSArray *myArray = [NSKeyedUnarchiver unarchiveObjectWithData:[(Event*)managedObject valueForKey:@"chatArray"]];
NSLog(@"chatArray %@",myArray);