私のアプリケーションには、多くの停留所がある旅行があります。これは、.xcdatamodeld ファイルで指定されています。私は好きな方法で旅行を操作することができ、それらはすべて問題なく機能します。ただし、各旅行に多くの停車地を追加すると問題が発生します。持続しないようです。これが次のコードです。このコードは旅行の detailViewController 内にあるため、特定の旅行が既にクリックされています。
Trip * trip = [self retrieveObjectWithID:_passedObjectId];
StopOff *newStop = [NSEntityDescription insertNewObjectForEntityForName:@"StopOff" inManagedObjectContext:managedObjectContext];
[newStop setValue:stopName forKey:@"stopName"];
[newStop setValue:stopCity forKey:@"stopCity"];
[newStop setValue:stopDate forKey:@"stopDate"];
[newStop setValue:stopAddress forKey:@"stopAddress"];
[newStop setValue:stopState forKey:@"stopState"];
[newStop setValue:stopTime forKey:@"stopTime"];
newStop.trip = trip;
[trip addStopObject:newStop];
NSLog(@" stop count %i", [trip.stop count]);
これを実行するために初めてボタンを押したときに、コンソールが吐き出すのは次のとおりです。CoreData: annotation: to-many relationship fault "stop" for objectID 0x8bb2810 <x-coredata://4CE70783-4729-46E0-B18B-8E325D1020CC/Trip/p20> fulfilled from database. Got 0 rows 2013-11-24 21:19:43.417 Tracker[30633:70b] stop count 1
ボタンを押し続けると、停止回数が増えます。アプリを再起動すると、停止カウントが下がって最初からやり直すので、持続していないようです。
私の質問は、旅行に対応する多くの停車地を正確に挿入するにはどうすればよいか、また、それらが挿入されて永続化されたら、その旅行に対応するすべての停車地を取得するにはどうすればよいかということです。
これは、各旅行をうまく取得するためのコードです。をmanagedObjectContext
使用して親View Controllerで処理されNSFetchedResultsController
ます。さらに情報が必要な場合はお知らせください
- (Trip*)retrieveObjectWithID:(NSManagedObjectID*)theID
{
NSError *error = nil;
Trip *theObject = (Trip*)[self.managedObjectContext existingObjectWithID:theID error:&error];
if (error)
NSLog (@"Error retrieving object with ID %@: %@", theID, error);
return theObject;
}