在Swift中使用Backendless的自定义模型类

时间:2016-05-16 07:10:47

标签: ios swift backendless

我正在尝试使用我在官方Backendless文档上在线找到的func从在线数据存储中检索数据!但是当我尝试使用像Lista(我自己的类)对象的角色时,我得到错误:无法将'__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)")
        }
    )
}

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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