领域模型转换失败

时间:2019-05-25 10:15:14

标签: swift realm

我有一个像这样的领域数据库模型:

import RealmSwift

class User: Object {

    let isVerified = RealmOptional<Bool>()   
    @objc dynamic var pk = 0
    @objc dynamic var profilePicUrl: String? = nil
}

我正在从服务中获取数据,并且它返回与领域模型相同的名称和类型。

我想将此数据保存到db。但是,当我尝试将模型转换为realm model时,会出现错误。

let data = [Users(value: serviceUser)] -> serviceUser comes from service.

在保存之前,当我尝试进行转换时,出现此错误:

  

“ RLMException”,原因:“无效”的值'ServiceUserModel(isVerified:Optional(false),pk:Optional(123456),profilePicUrl:可选(“”)类型为'bUser'属性'Users.isVerified的'UserDataValue' '。'

serviceUser模型:

public struct ServiceUserModel: Codable {
    public var isVerified: Bool?    
    public var pk: Int?
    public var profilePicUrl: String?
}

由于性能问题,我不想使用for循环。我想一次保存这些数据。

保存方法:

func save(users: [Users]){

        try! database.write {
            database.add(users)
        }
    }

如何转换?

1 个答案:

答案 0 :(得分:0)

我认为问题出在这里:

  

当我尝试转换时

在处理RealmOptional时,必须将其设置为.value属性。

let isVerified = RealmOptional<Bool>() 现在isVerified.value为nil

isVerified.value = true 现在是真的

但是您不能使用Bool?来设置值。

pk也是如此。

您应该实现convenience init()并为可选选项提供一些默认值