2017-07-02 66 views
0

我試圖在用戶鎖定iPhone時將一些數據保存到Ream數據庫。您的數據可能是由背景位置更新產生的位置座標。如果領域不能這樣做。核心數據可以做到嗎?當用戶鎖定iPhone時,Will Realm是否仍然可以保存數據?

這是我如何做到這一點的代碼:

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations { 
    NSLog(@"didUpdateLocations: %@", locations); 

    if (locations.count > 0) { 
     CLLocation *location = locations.firstObject; 

     if (location.horizontalAccuracy < 0) { 
      return; 
     } 

     JBLocation *locationObject = [[JBLocation alloc] init]; 
     locationObject.lat = location.coordinate.latitude; 
     locationObject.lon = location.coordinate.longitude; 
     locationObject.date = [NSDate new]; 
     locationObject.speed = location.speed; 

     RLMRealm *realm = [RLMRealm defaultRealm]; 
     [realm beginWriteTransaction]; 
     [realm addObject:locationObject]; 
     [realm commitWriteTransaction]; 
    } 
} 

回答

0

做的東西,而被鎖定的手機是一個後臺任務的一個例子。雖然我不確定你是否能夠成功地在後臺執行一項任務,但可以肯定的是,當操作系統殺死你的應用程序時,它不能再做你想做的事情。

我正在做一個類似於你的項目(後臺位置提取,保存到本地數據庫的數據,在屏幕鎖定時發佈到服務器)。它已經完成,但正在等待釋放信號。它也被提交(批准)給蘋果公司作爲測試版。

我用這個示例項目作爲一個庫,並將其移植到斯威夫特:

https://github.com/voyage11/Location

相關問題