我刚刚开始使用 Core Data,不确定它是如何工作的。我基本上有一个人实体和一个警报实体。每个人可以有许多警报。我想要的是去 person 对象的 detailViewController 并查看他们的警报。因为 NSSet 没有排序,所以我有一种方法可以返回排序的警报,如下所示:
- (NSArray *)sortedTimes {
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Alarm" inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];
NSSortDescriptor *timeDescriptor = [[NSSortDescriptor alloc] initWithKey:@"time" ascending:YES selector:@selector(compare:)];
[request setSortDescriptors:@[timeDescriptor]];
NSError *error = nil;
NSArray *objects = [self.managedObjectContext executeFetchRequest:request error:&error];
// Can I do this???
//self.person.alarms = [NSSet setWithArray:objects];
// for (NSManagedObject *obj in objects) {
// NSDate *date = [obj valueForKey:@"time"];
// NSLog(@"date: %@", [date description]);
// }
return objects;
}
我想知道的是,排队self.person.alarms = [NSSet setWithArray:objects];
可以吗?我想我不确定到底发生了什么。我的 executeFetchRequest 返回我想要的对象数组。我可以继续将其分配给人员实体的警报属性吗?我不确定是否有来自 Person->Alarm 的关系,我不应该搞砸,或者这样的事情是否完全合法。谢谢!