CoreData中保存的字符串返回和字符串。为什么?
问题描述:
嗨,我现在的储蓄从一个MultableArray数据库未来值,然后在CoreData:CoreData中保存的字符串返回<null>和字符串。为什么?
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();
}
的NSLog输出的MultableArray是:
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正在返回,然后两个值。那来自哪里?
有人可以帮忙吗?
在此先感谢
答
编辑:经过一番调查和澄清(见注释),这里是我的回答: 上一个NSArray调用valueForKey返回,其中,通过调用valueForKey的每个成员上创建的每个元素的数组原始数组。这意味着您的输出表明您的提取请求返回了3个总计对象,并且第一个没有设置它的raumattribut属性。
上一个回答: 您正在对NSArray实例(查询结果)调用valueForKey。也许你需要 get objectAtIndex:0首先使用你正在迭代值的变量? valueForKey可能返回零。
stringAttribute = [[att valueForKey:@"raumattribut"] componentsJoinedByString:@","];
或类似的。
编辑: 起初我错过了用于在第二部分循环中,我已编辑上面的代码样品使用attr,其
如果我不喜欢它,它仅返回(空)。还有其他解决方案吗? – Paks
我编辑了我的答案。虽然我不确定raumattribut属性是什么类型,并且componentsJoinedByString在那里是适当的。 –
这不工作。我得到和错误: - [NSCFString componentsJoinedByString]无法识别的选择器..“raumattribute”是一个NSString,你为什么要调用[att valueForKey:@“raumattribut”]而不是[events valueForKey:@“raumattribut”] – Paks