2016-05-16 1 views
0

私は公式のバックエンドレスドキュメントでオンラインで見つかったfuncを使ってオンラインデータストレージからデータを取得しようとしています!しかし、私がPersonaをLista(私自身のクラス)Objectのように使用しようとすると、エラーが発生します: '__NSDictionaryM'(0x10c1ccfc0)型の値を 'InLIsta_.Lista'(0x108439790)にキャストできませんでした。 私はこのサイトで検索しましたが、答えはバックエンドレスのケースに限定されていませんので、誰でも助けてくれることを願っています。SwiftのBackendlessでカスタムモデルクラスを使用する

これは私のコードです(明らかにすべてのvarを宣言し、 )を実行します。

class Lista : NSObject { 

    var nome: String? 
    var pr: String? 
    var pagamento = 0 
    var entrato: Bool = false 
    var commenti: String? 
    var objectId: String? 
    var created: NSDate? 
    var updated: NSDate? 
} 

func findQ() { 

    Types.tryblock({() -> Void in 

     let startTime = NSDate() 

     let found = self.backendless.persistenceService.of(Lista.ofClass()).find(self.query) 

     let currentPage = found.getCurrentPage() 
     print("Loaded \(currentPage.count) name objects") 
     print("Total name in the Backendless storage - \(found.totalObjects)") 

     for person in currentPage { 
      let persona = person as! Lista // here i get error 
      print("Restaurant <\(Lista.ofClass())> name = \(persona.nome)") 
      self.nomi.append(persona.nome!) 
     } 

     print("Total time (ms) - \(1000*NSDate().timeIntervalSinceDate(startTime))") 
     }, 

        catchblock: { (exception) -> Void in 
        print("Server reported an error: \(exception as! Fault)") 
     } 
    ) 
} 
+0

明らかに、 'currentPage'は' Lista'オブジェクトではなく辞書の配列です – vadian

+0

カスタムクラスを登録しましたか? – Wain

+0

はいwain私はバックエンドレスのドキュメントで説明したような私のカスタムクラスを登録しました。実際にはストレージにデータを正しく保存できますが、取得できます。だから私はそれを修正することができますどのようにvadian? –

答えて

0

backendless永続性サービスを使用すると、彼らはデシリアライゼーション中に使用することがありますので、カスタムクラスごとに呼び出す必要があるメソッド-(void)mapTableToClass:(NSString *)tableName type:(Class)type;を持っています。

self.backendless.persistenceService.mapTableToClass("Lista", type: Lista.self) 

これは、永続性サービスを使用するための呼び出しが行われる前に実行する必要があります。

obj-cに定義されていない場合、クラスはobj-cにエクスポートする必要があることに注意してください。これはまた、オプションを持つことができないことを意味します。

プラットフォームコード生成を使用してモデルクラス定義を作成し、すべての属性が適切なタイプで作成されていることを確認するのが理想的です。カスタムクラスにマップできなかった場合は、型の不一致や名前の不一致が原因です。現在のSDK実装では、オプションは常に失敗します。

+0

私はすべてのあなたの情報を理解するのか分からない!これは客観的なものですか? –

+0

SDKはobj-cであり、すべての迅速な機能を扱うことができません – Wain

+0

私は宣言で@objc属性を使用してから、素早いプロジェクトでクラスのヘッダーを作成する必要がありますか? –

関連する問題