NSManaged и вычисляемые свойства - PullRequest
0 голосов
/ 05 июля 2018

В CoreData я использую несколько свойств, таких как:

class Taxes: NSManagedObject {

    @NSManaged var rateValue: NSDecimalNumber
    @NSManaged var typeValue: NSNumber

Но чтобы использовать свойства, мне сначала нужно конвертировать rate и type:

    enum Values: Int {
        case high = 2
        case low  = 1
        case none = 0

        init(value: NSNumber) {
            switch value.intValue {
            case 2  : self = .high
            case 1  : self = .low
            default : self = .none
        }
    }

    var rate: Decimal      { return rateValue as Decimal }
    var type: Taxes.Values { return Taxes.Values(value: typeValue) }

Это работает, но мне интересно, возможно ли использовать свойства NSManaged без необходимости создания набора вычисляемых свойств. Или, может быть, есть лучший способ сделать это?

1 Ответ

0 голосов
/ 06 июля 2018

Создание вычисляемых свойств для сопоставления перечислений Swift является обычным способом, поскольку базовые данные не поддерживают типы перечислений Swift.

Однако вы можете сократить код, объявив числовые значения как скалярные типы

class Taxes: NSManagedObject {

    @NSManaged var typeValue: Int32

    enum Values: Int32 {
        case none = 0, low, high
    }

    var type: Taxes.Values { 
        get { return Taxes.Values(rawValue: typeValue)! }
        set { typeValue = newValue.rawValue }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...