Sco*_*tyB 4 core-data nsdictionary ios
我正在使用Core Data来存储包含可转换NSDictionary属性的实体.我存储后可以在.SQLite文件中看到一个对象,所以我觉得(?)我很擅长.但是,当我尝试检索整个实体时,我得到一个NSArray,其中一个元素[0]为零,当然,当我尝试访问任何属性时(当然)崩溃.
HVBAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"Events" inManagedObjectContext:context];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entityDesc];
NSError *error;
NSArray *objects = [context executeFetchRequest:fetchRequest error:&error];
// [objects count] = 1 but objects[0] = nil
// and the following line crashes of course
NSMutableDictionary *data = objects[0][@"data"];
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么吗?谢谢!
(请注意,我已经设置了一个带有NSDictionary属性和其他属性的Events类.)
以下是我设置实体的方法:

Events.h:

Events.m:

我弄清楚发生了什么:
首先,'对象'有一行但显得"空"的原因是因为这是默认行为.除非您通过发送setReturnsObjectsAsFaults消息进行更改,否则在您明确要求之前不会检索值:
[fetchRequest setReturnsObjectsAsFaults:NO];
Run Code Online (Sandbox Code Playgroud)
注意,NSLogging对象没有这个产生"data:".
其次,最重要的是,"对象"不是NSDictionarys或NSMutableDictionarys的NSArray.因此,虽然我可以代替[objects objectAtIndex:0]" with "objects[0],我不能代替[objects[0] valueForKey:@"created"]使用[objects[0][@"created"].这就是导致崩溃的原因.
希望这有助于某人!
| 归档时间: |
|
| 查看次数: |
4115 次 |
| 最近记录: |