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,其

+0

如果我不喜欢它,它仅返回(空)。还有其他解决方案吗? – Paks

+0

我编辑了我的答案。虽然我不确定raumattribut属性是什么类型,并且componentsJoinedByString在那里是适当的。 –

+0

这不工作。我得到和错误: - [NSCFString componentsJoinedByString]无法识别的选择器..“raumattribute”是一个NSString,你为什么要调用[att valueForKey:@“raumattribut”]而不是[events valueForKey:@“raumattribut”] – Paks