2013-07-22 50 views
1

我有2个表资产和奖励有关 资产< ---->奖励,关系名资产奖励,当我试图访问奖励表字段时访问关系对象时碰到一对一coredata/stackmob

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Assets"]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"assetsId == %@",str]; 
[request setPredicate:predicate]; 
[self.managedObjectContext executeFetchRequest:request onSuccess:^(NSArray *assetsArr) { 
for (Assets *assets in assetsArr) { 
NSLog(@"assets %@",[assets valueForKey:@"assetrewards.rewardsId"]); 
} 
} onFailure:^(NSError *error) { 

     NSLog(@"Error fetching: %@", error); 

    }]; 

然后我得到一个崩溃报告说

: Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<Assets 0x9fb9380> valueForUndefinedKey:]: the entity Assets is not key value coding-compliant for the key "assetrewards.rewardsId".' 

,但是当我检查喜欢聪明

NSLog(@"assets %@",[assets valueForKey:@"assetrewards"]); 

我得到的输出是这样的:

assets <Rewards: 0xad8a4f0> (entity: Rewards; id: 0x9fe4bf0 <x-coredata://B2D33481-2AF2-4C6D-9428-33BDCF653881-15578-00004A2B32ACC29E/Rewards/pc05848de529d4cbab6eb4475a5f9f591> ; data: <fault>) 

我想用关系进入回报领域的所有值/或用于有相关我想详细的奖励特定资产该奖励

回答

1

,你可以不喜欢assetrewards.rewardsId一个多步骤的关键路径上使用valueForKey:。你必须使用valueForKeyPath:。由于写的,代码正在寻找一个名为assetrewards.rewardsId键,名为assetrewards键,导致与命名rewardsId键的对象。

+0

谢谢你..它的伟大,它的工作对我来说,前面我已经做到了这一点,但是NVR知道这个小逻辑... @汤姆。 – iOSDev