我有两种从服务器检索的对象:
1) 公司 2) 类别
每次应用程序激活时,我都会从服务器更新数据(删除旧数据并插入新数据)。从我的数据库中,类别和公司通过 category_id
连接起来。
我的问题是,我可以使用 category_id
将每个公司与类别的关系连接起来吗?
最佳答案
我认为这意味着每个公司只与一个特定类别有关系。
您想将 categoryId
添加到您的类别实体,并在添加类别时保存 ID。
您的模型将包含许多其他属性,但这里是如何设置关系的。
而且,inspector 中的关系...
当然,您应该根据需要指定任何其他选项。
现在,您可以通过根据 CategoryId 搜索类别来设置 Company 实体的 category
关系,然后简单地设置 category
关系。核心数据将自动处理反向关系。
现在,给定任何类别,您都可以通过“类别”关系了解该类别中的所有 Company 对象,并且给定任何公司,您可以知道它属于哪个类别。
要通过 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"];
}
关于ios - CoreData对象之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33582266/