在 Swift 中将自定义模型 class 与 Backendless 结合使用

Using custom model class with Backendless in Swift

我正在尝试使用我在官方 Backendless 文档上在线找到的函数从在线数据存储中检索数据!但是当我尝试像 Lista(my own class) 对象一样使用角色时,出现错误:无法将类型 '__NSDictionaryM' (0x10c1ccfc0) 的值转换为 'InLIsta_.Lista' (0x108439790 ). 我搜索了这个网站,但答案并不特定于 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)")
        }
    )
}

后端持久化服务有一个方法 -(void)mapTableToClass:(NSString *)tableName type:(Class)type;,您需要为每个自定义 class 调用该方法,以便在反序列化期间使用它们。

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

这需要在进行任何调用以使用持久性服务之前完成。

请注意,classes,如果未在 obj-c 中定义,则必须导出到 obj-c。请注意,这也意味着您不能有任何选项。

理想情况下,您应该使用平台代码生成来创建模型 class 定义,以确保使用适当的类型创建所有属性。未能映射到您的自定义 class 可能是由于类型不匹配或名称不匹配造成的。在当前的 SDK 实现中,Optionals 总是会失败。