Я ищу способ получить диапазоны всех вхождений строки в большую строку в базовых данных.
Мое текущее решение включает в себя поиск всех объектов, у которых есть хотя бы один вхождение, а затем снова выполните поиск, чтобы найти все диапазоны строк. Этот метод не очень эффективен, так как он загружает в память множество постоянных объектов, особенно для ключей поиска небольшого размера или одного символа.
Я ищу способ получить диапазоны все вхождения непосредственно из основных данных, чтобы можно было предотвратить загрузку всех объектов.
Код, который я использую
Следующий код дает мне массив всех объектов, которые встречаются хотя бы один раз
let fetchRequest = Note.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "content contains[cd] %@", key)
return try container.viewContext.fetch(fetchRequest)
Это код, который дает мне диапазоны всех вхождений
var ranges: [Range] = []
while let range = string.range(of: substring, options: [.caseInsensitive, .diacriticInsensitive], range: (ranges.last?.upperBound ?? string.startIndex)..
Подробнее здесь: https://stackoverflow.com/questions/786 ... -core-data