2016-04-06 4 views
0

Я пытаюсь сохранить путешествие пользователей и загрузить его в CloudKit.Как сохранить местоположение пользователей в CloudKit в swift?

Следующее занимает местоположение пользователя, когда они перемещаются более чем на 5 метров и загружаются в виде строки, но я хочу, чтобы он был загружен как список местоположений или аналогичный, чтобы его можно было снести позже.

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
{ 
    let location = locations.last 
    let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude) 
    addCrumbPoint(center) 

    let message = "{\"lat\":\(location!.coordinate.latitude),\"lng\":\(location!.coordinate.longitude), \"alt\": \(location!.altitude)}" 

    let newSweet = CKRecord(recordType: "Sweet") 
    newSweet["content"] = message 

    let publicData = CKContainer.defaultContainer().publicCloudDatabase 
    publicData.saveRecord(newSweet, completionHandler: { (record:CKRecord?, error:NSError?) -> Void in 
     if error == nil { 
      print("woo") 
     }else{ 
      print(error) 
     } 
    }) 
} 

Документация по использованию местоположения и CloudKit написана в Objective-C, поэтому любая помощь будет блестящей.

CloudKit

CLLocationManager

ответ

1

Вы создаете CKRecordID и CKRecord. Затем вы установите последнее извлеченное CLLocation на CKRecord.

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    let location = locations.last! 
    let id = CKRecordID(recordName: "01") 
    let locationRecord = CKRecord(recordType: "location", recordID: id) 
    locationRecord.setObject(location, forKey: "location") 
    // or locationRecord["location"] = location 
    let publicData = CKContainer.defaultContainer().publicCloudDatabase 
    publicData.saveRecord(locationRecord) { record, error in 
    // 
    } 
} 
+0

Блестящий! Это отлично работает –