【问题标题】:Using Realm With Existing Class?使用现有类的领域?
【发布时间】:2016-05-24 23:56:57
【问题描述】:

关于将 Realm 与现有项目集成的一般问题。我拥有的另一个框架有一个 User 类,它有很多属性。无论如何,Realm 是否可以仅存储此对象而无需创建全新的 Realm 模型并将值从 User 的属性复制到新的 Realm 模型?

我可以这样做吗?

class RealmUser: Object {
    dynamic user: User?
}

即使用户不是领域定义的模型。

谢谢。

【问题讨论】:

    标签: ios swift realm


    【解决方案1】:

    Realm 仅支持以下属性类型:BoolInt8Int16Int32Int64DoubleFloatString、@9876543329@ 和 @98756 @。

    因此,您不能简单地将 User 对象添加到领域。如果您的User 类实现了NSCoding,您可以将User 对象转换为NSData 对象并存储它,但是您将无法查询User 的属性,因此恕我直言,这不是一个实际的选择.

    如果你真的想使用 Realm,我认为除了使用 User 类的所有属性创建一个 RealmUser 对象之外别无他法。您可以添加一个方便的初始化程序,使RealmUser 对象的创建更容易在您的代码库的其他部分:

    class RealmUser: Object {
       dynamic var userId = 0
       dynamic var name = ""
       ...
    
       convenience init(withUser user: User) {
            self.init()
            userId = user.id
            name = user.name
            ...
       }
    }
    

    这不像您的解决方案那样简短实用,但是向 Realm 添加自定义类是不可能的。

    【讨论】:

    • 感谢您的解决方案。说得通。那么你会建议使用 Realm 来解决这个问题吗?或者另一个支持我需要的框架?如果是后者,你会建议什么框架?
    • 就个人而言,我现在在几个项目中使用了 Realm,我非常喜欢它。我怀疑是否有一个数据库框架支持开箱即用地存储自定义对象,但如果你找到了请告诉我。
    猜你喜欢
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    相关资源
    最近更新 更多