#swift #realm
#swift #realm
Вопрос:
Сегодня я обнаружил Realm, и я с ним не знаком. Пожалуйста, помогите.
У меня есть 2 класса:
class EventDetail: Object {
dynamic var start_time : Int = 0
dynamic var end_time : Int = 0
convenience init(start_time: Int, end_time: Int ) {
self.init()
self.start_time = start_time
self.end_time = end_time
}
class Channel : Object {
dynamic var id : Int = 0
convenience init ( id : Int) {
self.id = id
}
let details = List<EventDetail>()
}
Я заполняю базу данных следующим образом:
let realm = try! Realm()
var newChannel = Channel (id : id)
let detailEvent1 = EventDetail(start_time:10, end_time: 20)
let detailEvent2 = EventDetail(start_time:20,end_time: 30)
newChannel.details.append(detailEvent1)
newChannel.details.append(detailEvent2)
try! realm.write {
realm.add(newChannel)
}
Вопрос в том, как удалить / обновить данные в определенном индексе?
Пример: получить detailEvent2 из канала, где индекс = 100
Ответ №1:
Вам необходимо выполнить выборку для типа объекта, который вы хотите изменить или удалить.
Основная операция
realm.objects(Channel.self)
Чтобы узнать, какие объекты вы хотите изменить или удалить, вы можете отфильтровать результат с помощью простой функции более высокого порядка и, например, предиката:
let lateStarters = realm.objects(Channel.self).filter(NSPredicate(format: "start_time > 10", argumentArray nil))
и измените их свойства, перечислив через результирующий массив:
try? realm.write({
for channel in lateStarters {
channel.start_time = 100
}
})