RealmSwift与枚举列表

问题描述 投票:0回答:1

我有一个带有一些字符串的枚举

public enum UserPermission: String, Decodable {
    case userManagement = "USER_MANAGEMENT"
    case contactManagement = "CONTACT_MANAGEMENT"
    case userV2 = "USER_V2.1"
}

@objcMembers final public class MyModel: Object, Decodable {

    public var permissionCollection = List<UserPermission>()

    public dynamic var rawRole: String? = nil

    private enum CodingKeys : String, CodingKey {
        case permissionCollection = "permission_collection"
    }

    convenience public init(permissionCollection: String) {
        self.init()
        self.permissionCollection = permissionCollection
    }

    public required convenience init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: CodingKeys.self)
        let rawRermissionCollection = try container.decode(String.self, forKey: .permissionCollection)
        self.init(permissionCollection: permissionCollection)
    }

}

我有一个错误Type 'UserPermission' does not conform to protocol 'RealmCollectionValue'

在数据模型中,我需要使用realm将枚举存储为列表。有人知道我该怎么做吗?

swift realm
1个回答
1
投票

Realm的List只能存储Object子类或Realm支持的属性类型之一(如IntString等)。 Realm不支持存储enum值,因此您也不能将它们存储在List中。

另一种方法是存储你的rawValueenum,因为它有一个rawValue类型的String,它可以存储在Realm中。

© www.soinside.com 2019 - 2024. All rights reserved.