0

我有两节课。第一个是 AbstractEntity.swift:

class AbstractEntity : DBObject{
    //...
}

另一个是继承了 AbstractEntity 的 User.swift。

class User: AbstractEntity {
    dynamic var Sync: NSNumber?
    dynamic var Password: NSString?
    dynamic var id_Worker: NSNumber?
    dynamic var Login: NSString?
}

在我的主数据库控制器中,我有这个方法:

func getObjectByID(ID: NSNumber, entityClass: AnyClass)-> AbstractEntity{
    println("String value = "+ID.stringValue)
    var query = entityClass.query().whereWithFormat("id = %@", withParameters: [ID.stringValue])

    var resSet = query.fetch()
    var abstractEntity = AbstractEntity()
    if (resSet.count > 0){
        abstractEntity = resSet[0] as! AbstractEntity
    }
    return abstractEntity
}

问题是当我尝试通过 id 从数据库中获取对象时,我的 Id 值为零。它只在我启动我的应用程序时第一次发生。

var user = getObjectByID(2, entityClass: User.classForCoder())

在此处输入图像描述

我第二次得到正确的值: 在此处输入图像描述

为什么会这样?

4

1 回答 1

0

由于这些不是 DBAccess 表,因此我们需要确保它们在任何地方使用之前都兼容。虽然我们会将其记录为错误并在未来的版本中修复它,但您应该能够通过调用以下方法来解决此问题:

+(void)setupTablesFromClasses:(Class)classDecl,...;

这将创建对象,并在使用它们之前缓存模式。

谢谢阿德里安

于 2015-09-18T09:18:59.410 回答