【问题标题】:getting crash while Accessing relationship objects One to One coredata/stackmob访问关系对象一对一coredata / stackmob时崩溃
【发布时间】:2013-07-21 07:41:20
【问题描述】:

我有 2 个表 Assets 和 Rewards 相关 资产奖励,当我尝试访问奖励表字段时,使用关系名称assererewards

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>)

我想访问具有关系/或特定资产的奖励字段的所有值,因为有奖励相关我想获取奖励的详细信息

【问题讨论】:

    标签: iphone ios core-data entity-relationship stackmob


    【解决方案1】:

    您不能在像assetrewards.rewardsId 这样的多步骤密钥路径上使用valueForKey:。你必须使用valueForKeyPath:。如所写,代码正在寻找一个名为 assetrewards.rewardsId 的键,不是一个名为 assetrewards 的键,它指向一个具有名为 rewardsId 的键的对象。

    【讨论】:

    • 谢谢.. 它对我很有用,之前我做过,但 nvr 知道这个小逻辑...... @Tom.
    猜你喜欢
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多