为什么query(DBAccess)第一次在Id属性中返回nil?

时间:2015-09-14 10:42:47

标签: ios swift dbaccess

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

class AbstractEntity : DBObject{
    //...
}

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

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值为nil。它只是在我启动我的应用时第一次发生。

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

enter image description here

我第二次得到正确的值: enter image description here

为什么会这样?

1 个答案:

答案 0 :(得分:0)

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

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

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

由于 阿德里安