2
からCloudKitレコードを取得私は現在ログインしているユーザーから位置レコードのすべてを取得したい現在のiCloudユーザー
をこれがCloudKit上の場所レコード作成します。
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 locationRecord = CKRecord(recordType: "location")
locationRecord["location"] = location
let publicData = CKContainer.defaultContainer().publicCloudDatabase
publicData.saveRecord(locationRecord) { record, error in
}
}
しかし、どのように希望を現在ログインしているユーザーだけのロケーションレコードを抜き出すのですか?
地図上に以前の旅のパンくずリストを作成するのにこれを使用したいと思いますが、リストを印刷するだけですばらしいスタートになります!ここで
は、これまでの私のコードです:
func getLocationAsync(complete: (instance: CKRecordID?, error: NSError?) ->()) {
let container = CKRecordID(recordName: "Location")
publicDB.fetchRecordWithID(location) { fetchedLocation, error in
if error != nil {
print(error!.localizedDescription)
complete(instance: nil, error: error)
} else {
print("fetched Location \(recordID?.recordName)")
complete(instance: recordID, error: nil)
}
}
}
ありがとう、私はすべての場所のデータをCloudKitに移動したいが、このビューには1人のユーザーのデータのみを表示したい。 ボトムソリューションの実装方法を教えてください。 –
トム、あなたのアプローチは悲しいことに欠陥がある。ユーザーがパスを通過すると保存に失敗し、2人のユーザーが互いの場所をまたいでも保存が失敗します。可能な限り効率的なものを維持するために、できるだけ多くのデータをクラウドに送信できるようにする必要もあります。このアイデアは、まったく可能ではあるが、危険にさらされているにも関わらず、移動中のユーザーが無線LAN接続を使用していることにも依存しています。ブレッドクラムをコアデータに保存し、データをまとめてグループ化し、単一のレコードとして保存します。 – user3069232
実装は簡単ですが、そのようなユーザーの場所を格納するためにpublicDBを使用することはお勧めしません。それはAppleによって拒否されます。 プライベートDBでは、ユーザー自身がアクセスできるのはOKです。 –