2016-12-27 4 views
0

現在、最新のKinvey SDK(バージョン3.3.5)を使用してswift 2.3から3への移行プロセスを進めています。 1xバージョン以来、数多くのアップデートを行っています。私の質問は、誰もが正常にPersistableKeyIDフィールドを照会し、複数のオブジェクトを取得することができましたか?Kinvey 3.3.5 IDによるSDKクエリ

私は引数として文字列の配列をとる "loadObjects"関数を使用できるようにしています。この関数は償却され、find(byId)に置き換えられました。下記を参照してください:

dataStore.find(byId: "only takes one") { uClass, error in 
if let uClass = uClass { 
    //succeed 
    print("UClass: \(uClass)") 
} else { 
    //fail 
} 

問題は、単一の文字列を引数として取ります。私はクエリ機能を使用しようとしましたが、 "_id"フィールドをパラメータとして受け取ることができません。

'Invalid property name', reason: 'Property '_id' not found in object of type 'Section' 

誰もが今、「ロードオブジェクト」は減価償却されたことが、これを実行する方法についてのアイデアを持っている:私はエラーが表示さ

//Just statically creating the sectionID array for now. This will dynamically be created 
    testIDs = ["58668307206c11177e5ab0d4", "58668307206c11177e5ab0d4", "57ad00a505a2bb55632659c3"] 

    let sectionStore = DataStore<Section>.collection() 

    let sectionQuery = Query(format: "_id IN %@", testIDs) 

    sectionStore.find(sectionQuery) {sectionResult, error in 
     if let sectionResult = sectionResult { 
      self.sectionsTest = sectionResult 

      self.sectionCollectionView.reloadData() 

     } else{ 
      //Error 
     } 

    } 

:次のコードを使用していますか?私が見つけることができる "find(byIds)"は配信されていません。

答えて

0

Jbone107、

私は以下のあなたのために働くなら、私に知らせて、これで結果を得ることができました。

let id:[String] = ["5855026650a816ec29012908","5855024a21400c5b492bea20"] 

    let query = Query(format: "_id IN %@", id) 

    dataStore.find(query) { data, error in 
     if let data = data { 
      //succeed 
      print(“Data: \(data)") 

     } else { 
      //fail 
      print("fetching failed") 
     } 
    } 

おかげで、 Pranav、回答 Kinvey

+0

: 「無効なプロパティ名」、理由:「プロパティ 『_id』型のオブジェクトには見られません...' 私が引っ張っているコレクションにはバックエンドにデータがあり、実際には "_id"プロパティを持っています。なぜこれが動作していないのか分かりません。 – jbone107

+0

Pranavの答えを使って試行を示す元の投稿を更新しました。問題は「_id」パラメータが認識されないことです。 – jbone107

+0

James、 問題を再現でき、エンジニアリングにエスカレートされました。エンジニアリングの情報がもっと得られたら、私はあなたにお返しします。 ありがとう、 Pranav Kinvey MLIBZ-1613 –

0

:iOS用のデータストアガイドごとに、デフォルトの ".collection()" 型である "キャッシュ" で。 「キャッシュ」タイプは、データをローカルに格納します。これは、バージョン3x SDKに「Realm」が含まれている理由です。

私は私のデータストアのコレクションを更新:

let sectionStore = DataStore<Section>.collection(.network) 

私はバックエンドではなく、キャッシュファイルからプルするクエリを強制的に「.network」を追加しました。これは実際にプロパティとして "_id"を識別し、クエリが正常に機能しました。なんらかの理由で、 "キャッシュ"ファイルはこれをプロパティとして格納していません。

追加SDK質問は、私はKinveyバックエンドからのNSNumberを引っ張っ問題を抱えていた

に答えました。これは、 "キャッシュ"クエリに関連する同様の問題であった。私はRealmのサポートサイトを最後の手段として検討し、これを把握しました。私はRealmが実際にタイプ "NSNumber"をサポートしていないことを発見しました。

抜粋:https://realm.io/docs/swift/latest/ レルムはBool、Int8、Int16、Int32、Int64、Double、Float、String、NSDate、NSDataの各プロパティタイプをサポートしています。

残念ながら、Kinveyは "Int"タイプをサポートしていません。回避策として、私はそれらを文字列に変更して、データを取得した後に「Double」または別のタイプに変換し直しています。しかし、単に ".network"コレクション型を使用すると、NSNumberは引き続き動作します。

おかげで、 ジェームズ私はまだ同じエラーが発生します

関連する問題