【问题标题】:CoreData relationship between objectsCoreData对象之间的关系
【发布时间】:2016-02-08 12:19:24
【问题描述】:

我有两种从服务器检索的对象:

1) 公司 2) 类别

每次应用程序激活时,我都会从服务器更新数据(删除旧数据并插入新数据)。从我的数据库中,类别和公司通过category_id 在它们之间连接。 我的问题是我可以使用category_id 将每个公司与一个类别联系起来吗?

【问题讨论】:

    标签: ios objective-c core-data


    【解决方案1】:

    我假设这意味着每个公司只与一个特定类别有关系。

    您想将categoryId 添加到您的类别实体,并在添加类别时保存 ID。

    您的模型将包含许多其他属性,但这里是设置关系的方式。

    而且,检查器中的关系...

    当然,您应该指定您认为必要的任何其他选项。

    现在,您通过根据 CategoryId 搜索 Category 来设置 Company 实体的 category 关系,然后简单地设置 category 关系。核心数据会自动处理反向关系。

    现在,给定任何类别,您可以通过 `categories 关系知道该类别中的所有公司对象,并且给定任何公司,您可以知道它属于哪个类别。

    要按 ID 获取类别,您可以执行以下操作...

    - (NSManagedObject*)categoryWithCategoryId:(NSString*)categoryId
                                         inMOC:(NSManagedObjectContext*)moc
                                         error:(NSError **)error {
        NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Category"];
        fetchRequest.predicate = [NSPredicate predicateWithFormat:@"categoryId = %@", categoryId];
        fetchRequest.fetchLimit = 1;
        return [[moc executeFetchRequest:fetchRequest error:error] firstObject];
    }
    

    要设置关系,如果你有 xcode/mogenerator 生成的子类,只需设置关系属性。

    NSError *error = nil;
    Category *category = [self categoryWithCategoryId:categoryId inMOC:moc error:&error];
    if (category) {
        // If you have generated subclasses...
        company.category = category;
        // Otherwise, you can do...
        [company setValue:category forKey:@"category"];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-12
      • 2011-03-08
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多