Свойства документа Swift Couchebase lite CBLModel не сохранены

Я пытаюсь создать объект CBLModel и сохранить его в кушетке lite. Документ сохраняется без ошибок, но при извлечении документа из базы данных свойства документа всегда равны нулю.

// модель

class TestModelUser: CBLModel {
    var userName:NSString?
}

// создать и сохранить

let userModel:TestModelUser = TestModelUser(newDocumentInDatabase: db)
userModel.userName = "test user name 10"
userModel.setValue(NSStringFromClass(TestModelUser), ofProperty: "type")
let saved = userModel.save(&error)
if saved {
    println("saved")
}else{
    if let err:NSError = error {
        println(err.localizedDescription)
    }
}

// получить

let dbView:CBLView = db.viewNamed("userView")
dbView.setMapBlock({ (document, emit) -> Void in
    emit(document["_id"], document)
    if let docType = document["type"] as? String {
        if docType == NSStringFromClass(TestModelUser) {
            emit(document["_id"], document)
        }
    }
    }, version: "5")

let queryResult1:CBLQueryEnumerator = db.viewNamed("userView").createQuery().run(&error)
for row:CBLQueryRow in queryResult1.allObjects as [CBLQueryRow] {
    let user:TestModelUser = TestModelUser(forDocument: row.document)
    if let uName = user.userName {
        println(uName)
    }
}

а user.userName всегда равен нулю, может быть, есть другой способ сохранить документ?


person Nils    schedule 13.11.2014    source источник


Ответы (1)


Решено.

Свойство документа должно иметь модификатор @NSManaged:

class UserModel: CBLModel {
    @NSManaged var userName:NSString?
}

Спасибо Йенсу (https://forums.couchbase.com/t/swift-couchebase-lite-save-cblmodel-document-problem/2054).

person Nils    schedule 15.11.2014