#objective-c #ios #core-data #nspredicate #nsfetchedresultscontroller
#objective-c #iOS #основные данные #nspredicate #nsfetchedresultscontroller
Вопрос:
Я пытаюсь получить результаты из текста строки поиска в основных данных по свойству, которое является NSNumber . В частности, получение объектов из хранилища, идентификационный номер которых «НАЧИНАЕТСЯ С» текста поиска.
В качестве примера, если пользователь вводит число «1» в поле поиска, мой выбранный запрос возвращает объекты, в том числе 1, 12, 14, 19, 100, 149, 1324, и т.д.
К сожалению, я также реализую сортировку в таблице, поэтому при сортировке по этому идентификационному номеру, если он представлен в виде строки в модели данных, сортировка становится: 1,10,100,2,20,200 вместо 1,2,10,20,100,200.
Как я могу получить лучшее из обоих миров здесь, чтобы я мог выполнять поиск по строковой сортировке, но сортировать по числовой сортировке? Должен ли я создавать два свойства в модели данных, строковое и числовое представление одних и тех же данных?
Любая помощь будет высоко оценена.
Rgds, Фелипе
Комментарии:
1. Я решил свою собственную проблему. Вместо преобразования строки поиска в int и использования BEGINSWITH с номером идентификатора слева и search int справа, я смог использовать BEGINSWITH с номером идентификатора слева и строкой поиска справа. Поиск и сортировка работают отлично.
2. Вы должны опубликовать это как ответ и принять его.
3. Оказывается, это не решило мою проблему… Я все еще не могу сортировать по NSNumbers с помощью BEGINSWITH.
Ответ №1:
Я предполагаю, что у вас есть два поля: фактический идентификатор, представляющий собой число, и затем searchIdentifier, представляющий собой строку. Поиск по строке, сортировка по номеру.
Ответ №2:
Хотя это нигде не упоминается в документации Apple, Like также работает с nsnumber.
Например,
[NSPredicate predicateWithFormat:@"numberField like '%@*'", searchTerm]
работает, где numberField является атрибутом основных данных типа NSNumber. При этом извлекаются все записи, где значение числового поля начинается с поискового термина.