Обычно при попытке создать NSPredicate
вы должны использовать NSString
, NSNumber
или NSDate
. Я пытаюсь создать NSPredicate
из неуказанного класса.NSPredicate with Custom NSObject
Это, как я создаю предикат:
[NSPredicate predicateWithFormat:@"property == %@", value];
Если значение является NSString
, это работает отлично, но если я создаю MyIdObject
и я установить значение, чтобы быть MyIdObject
я получаю немного разные предикаты
это является результатом ро предикатов я получаю:
С NSString
: свойством == "123"
С MyIdObject
: недвижимость == 123
Поскольку идентификатор сохраняются как NSString
в CoreData
, этого достаточно, чтобы сделать предикат неудачу.
Я знаю, что 123 возвращается из метода описания.
Просто добавив необходимое "в формате предиката не является решением, потому что тогда я буду просто получить свойство ==„% @“
По какой-то причине, когда NSString
возвращается из MyIdObject
оно трактуется по-разному от просто имея NSString
есть ли какое-либо решение для этого
Попытки упростить вопрос:.? Я хочу создать предикат, используя любой NSObject
в качестве значения и не NSString
, хотя значение сохраняются как NSString
в CoreData
. Возможно ли это?
Я хочу вам помочь, но после 10 чтений я не могу сделать голову или хвост того, что вы пытаетесь спросить. Не могли бы вы проверить/переписать? – GuybrushThreepwood
Спасибо за ответ. Я добавил абзац в конце. Надеюсь, это улучшит вопрос. –
Можете ли вы объяснить, что вы подразумеваете под этими двумя утверждениями: «Идентификатор сохраняется как NSString в CoreData» и «NSString возвращается из MyIdObject»? Если вы сохраняете некоторую форму идентификатора в MyIdObject, тогда ваш предикат должен использовать тот же идентификатор - он не может просто попытаться использовать сам MyIdObject. – pbasdf