0

公式のバックエンドレス ドキュメントでオンラインで見つけた関数を使用して、オンライン データ ストレージからデータを取得しようとしています! しかし、Lista (自分のクラス) オブジェクトのようなペルソナを使用しようとすると、次のエラーが表示されます: タイプ '__NSDictionaryM' (0x10c1ccfc0) の値を 'InLIsta_.Lista' (0x108439790) にキャストできませんでした。このサイトを検索しましたが、答えはバックエンドレスのケースに固有のものではないので、誰かが私を助けてくれることを願っています

これは私のコードです(明らかに、実行するコードに必要なすべての var と let を宣言しました):

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)")
        }
    )
}
4

1 に答える 1

0

バックエンドレス持続サービスには-(void)mapTableToClass:(NSString *)tableName type:(Class)type;、デシリアライゼーション中に使用されるように、カスタム クラスごとに呼び出す必要があるメソッドがあります。

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

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

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

理想的には、プラットフォーム コード生成を使用してモデル クラス定義を作成し、すべての属性が適切な型で作成されるようにする必要があります。カスタム クラスへのマッピングの失敗は、型の不一致または名前の不一致が原因である可能性があります。オプションは、現在の SDK 実装では常に失敗します。

于 2016-05-16T07:17:12.997 に答える