Могу ли я сделать свойство Realm Object из типа данных Enum? - PullRequest
0 голосов
/ 08 января 2019

, поэтому у меня есть пользовательский тип данных, как показано ниже:

enum WeightUnit : String {
    case Piece
    case Gram
    case Kilogram
    case Karton
    case Pouch
    case Dus
    case Renteng
    case Botol

    init (weightUnitFromServer: String) {
        switch weightUnitFromServer {
            case "Pcs": self = .Piece
            case "Gram": self = .Gram
            case "Kilogram": self = .Kilogram
            case "Ctn": self = .Karton
            case "Pch": self = .Pouch
            case "Dus": self = .Dus
            case "Rtg": self = .Renteng
            case "Btl": self = .Botol
            default: self = .Piece
        }
    }


}

и я хочу, чтобы у моего Продукта (объекта области) было свойство WightUnit, подобное

class Product : Object {

    @objc dynamic var productID : Int = 0
    @objc dynamic var name : String = ""
    @objc dynamic var categoryID : Int = 0
    @objc dynamic var categoryName : String = ""
    @objc dynamic var unitPrice: Double = 0.0
    @objc dynamic var quantityInCart = 0
    @objc dynamic var quantityFromServer = 0
    @objc dynamic var descriptionProduct : String = ""
    @objc dynamic var hasBeenAddedToWishList : Bool = false
    @objc dynamic var hasBeenAddedToCart : Bool = false
    @objc dynamic var isNewProduct : Bool = false
    @objc dynamic var productWeight : String = ""
    @objc dynamic var weightUnit : WeightUnit?  <--- the problem in here
    @objc dynamic var minimumOrderQuantity = 0
    @objc dynamic var maximumOrderQuantity = 0
}

и выдает ошибку:

Свойство нельзя пометить @objc, поскольку его тип не может быть представлен в объективе-C

enter image description here

так я могу сделать свойство объекта области из перечисления? как это сделать, если это возможно?

1 Ответ

0 голосов
/ 08 января 2019

Способ, которым я делаю это, заключается в том, что я сохраняю объект как String, а затем использую отдельную переменную или метод get only, которая преобразует строку в перечисление, подобное этому

class Animal: Object {
    @objc dynamic var animalClass: String = ""

    var animalClassType: AnimalClass? { return Class(rawValue: self.animalClass) }
}

enum AnimalClass: String {
    case mammal, reptile
}
...