所以我不确定这应该如何工作。我有一个名为 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 属性,我的 fetchedResultsController.fetchedObjects 中也会有 1-7 个地图对象,并用一堆相同的对象填充下一页上的 TableViewController。有一个更好的方法吗?我想我可以制作一个模仿 NSManagedObject 的常规 MapTemp : NSObject ,并且只在需要保存 Map 或其他东西时才创建 Map : NSManagedObject 。
想法?谢谢!