【问题标题】:Core Data Table Relationship and Fetchrequest核心数据表关系和 Fetchrequest
【发布时间】:2014-06-06 07:52:30
【问题描述】:

我正在使用情节提要和核心数据开发一个 iPad 应用程序。我对核心数据不太了解。我有 2 个表名 A 和 B。表 a 有 2 个字段,名称为 datacode 和 price。在表 B 中有两个名称为 itemcode 和 text.Table A 的字段已设置限制。

表A

数据码价格

p1 10

m1 17

p0 28

m3 20

4 月 12 日

表 B

项目代码文本

p0 车

p1 总线

m2 笔

m1 球

p0 禁止

r1 书

m3 铅笔

n1 电视

w4 收音机

tableB 中 itemcode 中的值是 table A 中的数据代码 + 一些其他值。我需要根据 itemcodes 从 tableB 中获取文本值,哪些值对应于 table AI 中的 datacode 我如何获取来自 B 的文本基于此标准。

【问题讨论】:

  • @chris 我在 Objective C 方面只有 2 周的经验。我需要做一个项目。我不知道核心数据关系。请帮助我。

标签: ios objective-c core-data nsfetchrequest


【解决方案1】:

首先,您需要在表 A 和 B 之间创建关系。 之后,您必须根据您的关系获取记录..... 您将像这样获取您的记录....

NSMutableArray *arrObj = [[NSMutableArray alloc]init];
for(TableB *tblObj in [TableAObj relationWithTblB]){
      [arrObj addObject:tblObj];
}
NSLog(@"Your records related with tableA = %@",arrObj);

【讨论】:

    【解决方案2】:

    您需要将表 A 的数据代码与表 B 的项目代码一起使用谓词,如下所示:

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    
    NSEntityDescription *aEntity = [NSEntityDescription entityForName:@"TableA" inManagedObjectContext:moc];
    [fetchRequest setEntity:BEntity];
    
    NSArray* fetchResults = [moc executeFetchRequest:fetchRequest error:nil];
    

    您将获得 TableA 的所有对象。因此,如果您与 TableB 有一对一的关系,您可以直接访问所有属性,例如:

    TableA *tableAObject = fetchResults[i];
    NSString * itemcode = tableAObject.tableBRelation.itemcode
    

    【讨论】:

    • 我尝试了这种方法,但应用程序正在终止并显示错误....无法识别的选择器发送到实例 0x8cb09a0
    • 我在这里没有使用其他方法。我的表之间的关系是一对一的,这是这里的问题吗?
    • 表之间的关系是一对一的:所以在这种情况下,如果您获取 tableA 就足够了。看看上面代码的变化。
    • 我得到了所有空值。哪里有问题。在关系或代码中?
    • 我正在使用restkit coredatamapping将数据存储在表中。所有数据都成功保存在表中
    猜你喜欢
    • 1970-01-01
    • 2020-04-17
    • 2020-03-09
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多