したがって、これがどのように機能するのかわかりません。Map という NSManagedObject サブクラスがあります。次のように作成されます。
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
// create map with below initializer
MKCoordinateRegion region = MKCoordinateRegionForMapRect(mapView.visibleMapRect);
self.map = [Map mapWithName:nil: region:region inManagedObjectContext:self.managedObjectContext;
}
+ (Map *)mapWithName:(NSString *)mapName region:(MKCoordinateRegion)region inManagedObjectContext:(NSManagedObjectContext *)context {
Map *aMap = [Map mapWithName:mapName inManagedObjectContext:context];
aMap.centerLatitude = @(region.center.latitude);
aMap.centerLongitude = @(region.center.longitude);
aMap.latitudeDelta = @(region.span.latitudeDelta);
aMap.longitudeDelta = @(region.span.longitudeDelta);
return aMap;
}
デリゲート メソッドなので、ここに Map オブジェクトを配置します。
- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView
常に呼び出されるわけではありませんが、regionDidChangeAnimated: は呼び出されます。問題は、NSManagedObjectContext 内に 1 ~ 7 個のマップ オブジェクトを作成できることです。次の画面に移動すると、self.map プロパティが 1 つしかない場合でも、fetchedResultsController.fetchedObjects に 1 ~ 7 個のマップ オブジェクトが含まれ、次のページの TableViewController に同じオブジェクトの束が読み込まれます。これを行うより良い方法はありますか?通常の MapTemp : NSObject を作成して NSManagedObject を模倣し、Map : NSManagedObject を保存する必要がある場合にのみ作成できると思いました。
考え?ありがとう!