2017-02-03 4 views
0

У меня есть массив данных, который не обязательно должен быть управляемым списком, а это значит, что мне не нужно Realm для создания новой модели для элементов со ссылками и возможность запроса по элементам и т. д. Мне просто нужен простой массив, как правило, примитивов, которые не наследуются от Object в любом случае, которые будут сохраняться с моим основным объектом.Хранение простого массива в Realm без создания управляемого списка в Swift

Единственное решение, о котором я могу думать, это использовать NSData и NSKeyedArchiver/NSKeyedUnarchiver. Это лучший/единственный способ сделать это? Должен ли я просто использовать Список, даже если я не думаю, что мне это понадобится? Какова наилучшая практика для этой ситуации?

ответ

0

Realm не поддерживает массивы примитивов (хотя эта функциональность скоро появится), поэтому наиболее простым решением является использование List, заполненного объектами модели, которые просто завершают ваши примитивы. Нет ничего плохого в архивировании и с NSData и хранении данных в вашей модели Realm, хотя, если вы считаете, что лучше подходит для вашего конкретного варианта использования.

0

Вот как я решил разобраться с этим:

var instructions: [String] { 
    get { 
    if _instructions == nil { 
     _instructions = NSKeyedUnarchiver.unarchiveObject(with: instructionsData) as? [String] 
    } 
    return _instructions! 
    } 
    set { 
    instructionsData = NSKeyedArchiver.archivedData(withRootObject: newValue) 
    _instructions = newValue 
    } 
} 
fileprivate var _instructions: [String]? = nil 
dynamic var instructionsData = Data() 

override static func ignoredProperties() -> [String] { 
    return ["instructions", "_instructions"] 
} 

Таким образом, я могу использовать массив, как я обычно, и до сих пор он упорствовал в простой форме (без необходимости создания фактического List и имеющих для управления множеством новых моделей/объектов).