Core Dataを使い始めたばかりで、これがどのように機能するかわかりません。基本的に、Personエンティティとalarmエンティティがあります。一人一人が多くのアラームを持つことができます。私が欲しいのは、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から、いじってはいけない関係があるのか、それともこのようなものが完全に合法なのかはわかりませんでした。ありがとう!