ios-访问一对一关系引发了崩溃

问题描述

访问一对一关系引发了崩溃

有两个表Assets和Rewards,对应关系是一对一。我想访问reward表。

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

我想要通过对应关系访问reward内的所有值,或者是一个特定的asset可以得到对应reward的详细内容。

请高手指点。

解决方案

你不能使用valueForKey:,在多步骤的路径,比如assetrewards.rewardsId,需要使用valueForKeyPath:。代码在寻找名为assetrewards.rewardsId的关键字,而不是名为assetrewards可以指向rewardsId对象的关键字

时间: 2024-08-02 00:15:22

ios-访问一对一关系引发了崩溃的相关文章

Hibernate的一对一关系

一对一关系的维护有两种,分为主键关联和唯一外键关联一对一关系的维护有两种,分为主键关联和唯一外键关联主键关联:(双向)(主控方) Person.javaPerson {    private String username;    //对被控方的引用    private Address address;    public String getUsername() {        return username;    }    public void setUsername(String 

ios-NSInvalidArgumentException引发应用崩溃

问题描述 NSInvalidArgumentException引发应用崩溃 看一下我的代码,从网站服务器获得数据,但是崩溃了: - (void)loadDataSource { // Request NSString *URLPath = [NSString stringWithFormat:@""http://imgur.com/gallery.json""]; NSURL *URL = [NSURL URLWithString:URLPath]; NSMutab

iOS 中由谓词引发的正则血案正在破案中

iOS 中由谓词引发的正则血案正在破案中 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 谓词可以解析正则,还有几个iOS类可以实现同样的功能. 当时研究时,觉得无比兴奋,为什么现在回想起来,没

onetwoone-hibernate一对一关系的配置问题

问题描述 hibernate一对一关系的配置问题 一对一关系,怎么走一个添加方法,然后把数据添加到两张表中,修改的时候也是修改两张表中的数据,求解? 解决方案 Hibernate中关于一对一关系Hibernate关联关系配置(一对多.一对一和多对多)Hibernate关联关系配置(一对多.一对一和多对多) 解决方案二: 手动维护呗,控制在一个事务之内就行了. 解决方案三: 已我现在知道的,你可以在一个方法里面分别对这两个表对应的实体类对象进行操作.不过hibernate好像对于一对一关联的也有相

ios sqlite3-ios 中应用sqlite3进行本地读取 每次读取 ios内存增加知道内存不足 崩溃

问题描述 ios 中应用sqlite3进行本地读取 每次读取 ios内存增加知道内存不足 崩溃 sqlite3_stmt *stmt = [[BISQLiteUtil sharedBISQLiteUtil] getSQLiteStatement:(char *)[sql UTF8String]]; 1.这段代码注释内存增加没问题, 2.一释放,读取的数据不做处理,内存也会明显增加,操作几次,知道系统内存不足崩溃退出 3.sqlite3读取数据有什么优化方法吗?有人遇到过这个问题吗?急....

ios下某些代码造成的崩溃backtrace无法定位

问题描述 ios下某些代码造成的崩溃backtrace无法定位 如题,我在界面上建了一个crash按钮,按钮的响应函数begincrash中代码如下 这段代码会产生一个SIGSEGV信号,我在相应的信号捕获函数中进行了获取堆栈操作 打印出来的堆栈如下所示,并没有打印出begincrash...请问这是为什么

直播平台上演赴死大戏:压力引发行业崩溃症

当下,直播行业是当之无愧的热点.互联网巨头.创业者纷纷涌入:众多细分行业想借助直播玩转新营销:网红轮番上位,收入不断创新高:众多网民将其当成消遣娱乐新渠道--而这些都是直播行业的光明面,其阴暗面也不断曝光--涉黄.低俗.虚假直播事件层出不穷:不断挑战道德与法律底线-- 对于直播行业的主角之一--平台来说,则面临更严峻的问题:竞争压力增大.亏损严重.融资困难.政策趋向严苛--在种种压力之下,愈来愈多的直播平台向外界传递"悲催"信号,甚至纷纷上演"赴死大戏".行业崩溃症

EntityFramework之一对一关系(二)

前言 关于表关系园中文章也是数不胜收,但是个人觉得最难攻克的是一对一,对其配置并非无道理可循,只要掌握了原理方可,且听我娓娓道来! 共享主键关系 概念:就是两个表共享相同的主键值,也就是说一表的主键值是另外一个表的外键值. 我们现在给出三个类,一个是User(用户类),一个是Address(地址类),最后一个是Shipment(运货车类).每个用户都对应一个银行账户地址也就是Address,同时运货车都有一个运货的地点也就是Address.鉴于此设计类图如下并且我们建立如下三个类. /*用户类*

iOS访问通讯录开发-读取联系人信息

读取通信录中的联系人一般的过程是先查找联系人记录,然后再访问记录的属性,属性又可以分为单值属性和多值属性.通过下面例子介绍联系人的查询,以及单值属性和多值属性的访问,还有读取联系人中的图片数据. 本案例是从iOS设备上读取通讯录中的联系人,并将其显示在一个表视图中,可以进行查询,点击联系人进入详细信息画面.访问通讯录的应用必须要做的两件事情: 1.添加AddressBook和AddressBookUI框架 为工程添加AddressBook.framework和AddressBookUI.fram