2016-04-07 5 views
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) 
     } 
    } 
} 

答えて

1

あなたの目標は、プライベート・データベースを使用し、その後、他のユーザーにそれを共有するユーザのパン粉の場所を保存していないのであれば。 同様に、ユーザーのすべてのロケーションレコードを取得できます。

パブリックDBを使用する場合は、ユーザーレコードを示すLocationレコードにCKReferenceタイプのエントリを追加します。ユーザーのレコードIDに基づいて述語を使用できるようにする

+0

ありがとう、私はすべての場所のデータをCloudKitに移動したいが、このビューには1人のユーザーのデータのみを表示したい。 ボトムソリューションの実装方法を教えてください。 –

+0

トム、あなたのアプローチは悲しいことに欠陥がある。ユーザーがパスを通過すると保存に失敗し、2人のユーザーが互いの場所をまたいでも保存が失敗します。可能な限り効率的なものを維持するために、できるだけ多くのデータをクラウドに送信できるようにする必要もあります。このアイデアは、まったく可能ではあるが、危険にさらされているにも関わらず、移動中のユーザーが無線LAN接続を使用していることにも依存しています。ブレッドクラムをコアデータに保存し、データをまとめてグループ化し、単一のレコードとして保存します。 – user3069232

+0

実装は簡単ですが、そのようなユーザーの場所を格納するためにpublicDBを使用することはお勧めしません。それはAppleによって拒否されます。 プライベートDBでは、ユーザー自身がアクセスできるのはOKです。 –

関連する問題