我将 NSManagedObjects 子类化为 Person 和 Company。在核心数据中,我使用两种方式建立了这些关系(一种从个人到公司,称为 personCompany,另一种是 companyPerson)。我的应用程序很好地保存了个人和公司,它们的头文件如下所示(为了演示目的进行了大量简化):
#import <CoreData/CoreData.h>
@interface BBPerson : NSManagedObject
@property (nonatomic) NSString *firstName;
@property (nonatomic) NSString *lastName;
@end
----------------------
#import <CoreData/CoreData.h>
@interface BBCompanyName : NSManagedObject
@property (nonatomic) NSString *companyName;
@end
在我的“添加人员”视图控制器中,部分保存方法如下。
//If this is a new person, best add a person
if (!currentPerson) {
currentPerson = [NSEntityDescription insertNewObjectForEntityForName:@"Person"
inManagedObjectContext:managedObjectContext];
}
//Write the values back to the entity
currentPerson.firstName = txtFirstName.text;
currentPerson.lastName = txtLastName.text;
**//I WANT TO DO THE BELOW: but clearly can't**
//[currentPerson setCompany:selectedCompany];.
//Save back to core data
NSError *error;
if (![managedObjectContext save:&error]) {
NSLog(@"Failed to save - error: %@", [error localizedDescription]);
}
如果我在这里引用了另一家公司(上面显示为 selectedCompany),我如何更改我的子类 NSManagedObject 以添加此关系?我查看了文档,但我仍然有点飘忽不定。
我想用我的子类 NSManagedObject 创建一个可以持久的关系。类似 [currentPerson setCompany:selectedCompany]; 这当然需要 currentPerson 一个方法 - 这个方法看起来如何?
我想做的是能够在应用程序的后期阶段为公司召集所有人员。我确实考虑过使用谓词和外键并抛弃关系来做到这一点,但那是我让自己误以为这是一个数据库,但事实并非如此。