Преобразование строк ISO 8601 в актуальное в createOrUpdateInDefaultRealmWithObject

У меня есть блок JSON, возвращенный из REST API в следующем формате:

[
  { 
    id: 1,
    locations: [
      {
        arriveAt: "2015-03-14T16:05:16Z"
      },
      {
        arriveAt: null
    ]
  },
  ...
]

Затем у меня есть код в моем проекте следующим образом:

let trips = json as [NSDictionary]
let realm = RLMRealm.defaultRealm()
realm.beginWriteTransaction()
for trip in trips {
  Trip.createOrUpdateInDefaultRealmWithObject(trip)
}
realm.commitWriteTransaction()

В моем классе Location есть переменная dynamic var arriveAt: NSDate?. Я также расширил NSDate с помощью метода fromISO8601String, который инициализирует NSDate, преобразуя строку ISO 8601 в дату.

Есть ли способ, чтобы, когда Realm пытается создать объект Location, он автоматически запускал строку из JSON через NSDate.fromISO8601String?


person Dave Long    schedule 13.03.2015    source источник


Ответы (1)


Привет, Дэйв, в Realm еще нет ничего, что могло бы сделать это за тебя. Вам нужно будет использовать преобразователь, такой как Realm-JSON или Mantle и т. д.

person yoshyosh    schedule 13.03.2015
comment
В итоге я вручную проанализировал каждый блок JSON, а затем собрал все вместе в конце. - person Dave Long; 16.03.2015
comment
Это тоже работает :), приятно слышать! Мы работаем над навигационным решением, чтобы сделать это проще - person yoshyosh; 16.03.2015
comment
было бы здорово, если бы вы могли применять фильтры при обработке данных из API в Realm. - person Dave Long; 16.03.2015
comment
Можете ли вы уточнить, что вы хотели бы видеть? - person yoshyosh; 16.03.2015
comment
Я добавил это как проблему в репозиторий Realm-Cocoa GitHub. github.com/realm/realm-cocoa/issues/1641 - person Dave Long; 16.03.2015
comment
Большое спасибо, команда будет использовать это, чтобы помочь создать функцию! - person yoshyosh; 16.03.2015
comment
Спасибо! Пока мне нравится Realm. Заменил на него CoreData за 2 дня в этом приложении. - person Dave Long; 16.03.2015
comment
Давайте продолжим обсуждение в чате. - person yoshyosh; 16.03.2015