我正在尝试设置一个应用程序,以便有一个后台任务,其中 locationManager 接收然后使用核心数据存储的更新。这是我用来将 locationManager 作为后台任务运行的代码:
(void)viewDidLoad
{
[super viewDidLoad];
timerAndMap = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[self endDate];
}];
if(nil == locationManager) {
locationManager = [[CLLocationManager alloc] init];
}
locationManager.delegate = self;
locationManager.distanceFilter = 500;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
[[UIApplication sharedApplication] endBackgroundTask:timerAndMap];
}
但是,我遇到的问题是弄清楚如何使委托方法成为后台线程的一部分。当 locationManager 调用 didUpdateToLocation 时,我想将新位置的经度、纬度和日期保存为临时 managedObjectContext 中实体的属性,然后与我在主线程上建立的 ManagedObjectContext 合并(据我所知,当应用程序运行时)在后台运行的新核心数据实体无法存储到我的主线程 ManagedObjectContext)。