问题 将数组存储在Realm对象中


我是Swift中的Realm新手。有没有办法在Realm Object中存储字符串数组?

我有一个JSON对象,如:

"firstName": "John",
"imgName": "e9a07f7d919299c8fe89a30022151135cd63773f.jpg",
"lastName": "Wood",
"permissions": {
    "messages": ["test", "check", "available"]
},

我怎么能存储 消息 数组 权限 键?


3510
2018-06-03 06:54


起源



答案:


你可以这样:

class Messages: Object {
    dynamic var message = ""
}

class Permission: Object {
    let messages = List<Messages>()
}

class Person: Object {
    dynamic var firstName = ""
    dynamic var imgName = ""
    dynamic var lastName = ""
    var permissions : Permission = Permission()
}

无论如何,我认为现在有很好的记录 Realm Swift文档


12
2017-09-27 03:37





这是一个不需要的简单技术 List<T> 如果你确定你的字符串可以安全地被标记化。

class Person: Object {
    private let SEPARATOR = "||"

    dynamic var permissionsString: String? = nil
    var permissions: [String] {
        get {
            guard let perms = self.permissionsString else { return [] }
            return perms.componentsSeparatedByString(SEPARATOR)
        }
        set {
            permissionsString = newValue.count > 0 ? newValue.joinWithSeparator(SEPARATOR) : nil
        }
    }

    override static func ignoredProperties() -> [String] {
        return ["permissions"]
    }
}

3
2018-04-05 09:18





这个问题已经有人回答了,请检查 这个链接 

您当前需要一个包含字符串的RLMObject:

@interface StringObject : RLMObject
@property NSString *value;
@end
RLM_ARRAY_TYPE(StringObject)

@implementation StringObject
@end

@interface Object : RLMObject
@property RLMArray<StringObject> *array;
@end

-6
2018-06-03 07:00



他要求迅速...... - sofacoder


答案:


你可以这样:

class Messages: Object {
    dynamic var message = ""
}

class Permission: Object {
    let messages = List<Messages>()
}

class Person: Object {
    dynamic var firstName = ""
    dynamic var imgName = ""
    dynamic var lastName = ""
    var permissions : Permission = Permission()
}

无论如何,我认为现在有很好的记录 Realm Swift文档


12
2017-09-27 03:37





这是一个不需要的简单技术 List<T> 如果你确定你的字符串可以安全地被标记化。

class Person: Object {
    private let SEPARATOR = "||"

    dynamic var permissionsString: String? = nil
    var permissions: [String] {
        get {
            guard let perms = self.permissionsString else { return [] }
            return perms.componentsSeparatedByString(SEPARATOR)
        }
        set {
            permissionsString = newValue.count > 0 ? newValue.joinWithSeparator(SEPARATOR) : nil
        }
    }

    override static func ignoredProperties() -> [String] {
        return ["permissions"]
    }
}

3
2018-04-05 09:18





这个问题已经有人回答了,请检查 这个链接 

您当前需要一个包含字符串的RLMObject:

@interface StringObject : RLMObject
@property NSString *value;
@end
RLM_ARRAY_TYPE(StringObject)

@implementation StringObject
@end

@interface Object : RLMObject
@property RLMArray<StringObject> *array;
@end

-6
2018-06-03 07:00



他要求迅速...... - sofacoder