我正在保存来自MultableArray中的数据库然后在CoreData中的值:
NSMultableArray *mutary = [[NSMultableArray alloc] init];
NSManagedObjectContext *context = [app managedObjectContext];
for(int n=0; n<[AttributeArray count]; n++)
{
[mutary addObject:[[AttributeArray objectAtIndex:n] objectForKey:@"AttributName"]];
NSLog(@"%@", mutary);
}
attributeString = [mutary componentsJoinedByString:@","];
raume = [NSEntityDescription insertNewObjectForEntityForName:@"Raum" inManagedObjectContext:context];
raume.raumattribut = attributeString;
if (![context save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
MultableArray的NSLog输出是:
2012-06-20 17:21:00.047 book-app[31984:15803] (
A7OVERHEAD,
Beamer
)
到目前为止,它的工作正确。数据库中的两个预期值现在位于Array中。 现在我从CoreData获取这些属性:
NSManagedObjectContext *context = [app managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Raum" inManagedObjectContext:context];
[request setEntity:entity];
NSError *error = nil;
NSArray *events = [context executeFetchRequest:request error:&error];
for (Raum *att in events)
{
stringAttribute = [[events valueForKey:@"raumattribut"] componentsJoinedByString:@","];
NSLog(@"ATTRIBUTE: %@", stringAttribute);
}
}
到目前为止一切顺利。但是,如果我现在看看我的NSLog输出:
2012-06-20 17:21:00.055 book-app[31984:15803] ATTRIBUTE: <null>,A7OVERHEAD,Beamer
CoreData正在返回,然后是两个值。它来自哪里?
有人可以帮忙吗?
提前致谢
答案 0 :(得分:1)
以前的答案:
您在NSArray的实例(查询结果)上调用valueForKey。也许你需要 get objectAtIndex:0 首先使用你正在迭代值的变量? valueForKey可能会返回nil。
stringAttribute = [[att valueForKey:@"raumattribut"] componentsJoinedByString:@","];
或类似。
编辑: 起初我在第二部分错过了for循环,我编辑了上面的代码示例以使用attr,其中