CoreData NSPredicate - нет результата для первого символа в строке поиска - PullRequest
0 голосов
/ 11 февраля 2019

У меня проблема с nspredicate при поиске первого символа в строке поиска с использованием контроллера результатов выборки (FRC).

Делегат панели поиска для updatesearchresult:

//UISearchResultsUpdating
public func updateSearchResults(for searchController: UISearchController){

    if let searchText = resultSearchController.searchBar.text , searchController.isActive {   Other codes........  }

}

Мой предикат выглядит следующим образом:

 let entity = NSEntityDescription.entity(forEntityName: "XMPPUserCoreDataStorageObject", in: moc)!
 let sd1 = NSSortDescriptor(key: "nickname", ascending: false)

 let sortDescriptors = [sd1]
 let fetchRequest:NSFetchRequest<XMPPUserCoreDataStorageObject> = NSFetchRequest(entityName: "XMPPUserCoreDataStorageObject")
 fetchRequest.entity = entity
 fetchRequest.sortDescriptors = sortDescriptors
 fetchRequest.fetchBatchSize = 10

 *fetchRequest.predicate =  NSPredicate(format:"jidStr contains[c] %@ OR nickname contains[c] %@ ", searchText,searchText)*

Я использую пользовательский путь к ключу раздела ("searchSection"), чтобы отделить раздел Контакты и Групповые чаты следующим образом

let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext:moc , sectionNameKeyPath: "searchSection", cacheName: nil)

Для searchSection, объявленного следующим образом

dynamic var searchSection: String {

    if(jidStr.contains("+")){
        return "Contacts"
    }else{
        return "Group Chats"
    }
}

Вы можете обратиться к прикрепленным изображениям ниже

Нет результата

Срезультат

Интересно, почему при вводе второго символа будет отображаться результат, но не с первым символом для некоторых символов.Надеюсь, любой может помочь.Большое спасибо

...