我有两个相同代码的项目来测试iOS和Mac OS中唯一属性的行为,并发现它们是不同的。
首先,我创建了一个名为Person
的实体,并为其添加了一个属性name
。然后将此属性添加到constraints
。
其次,我在[_managedObjectContext setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];
中将- (NSManagedObjectContext *)managedObjectContext
添加到AppDelegate.m
。
最后,我修改了viewDidLoad
中的ViewController.m
,如下所示:
- (void)viewDidLoad {
[super viewDidLoad];
AppDelegate *sharedDelegate = [[UIApplication sharedApplication] delegate];
// NSApplication for Mac OS
Person *salary = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:sharedDelegate.managedObjectContext];
[salary setName:@"a"];
[sharedDelegate.managedObjectContext save:nil];
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
NSArray *result = [[sharedDelegate managedObjectContext] executeFetchRequest:request error:nil];
NSLog(@"%lu",(unsigned long)[result count]);
for (Person *item in result) {
NSLog(@"%@",[item name]);
}
}
在我多次运行这两个项目之后,我发现iOS中保证属性的唯一性,而在Mac OS中则不正确。它是一个存在的错误,还是我以错误的方式完成了测试?