Имеет NSFetchRequest с NSPredicate, поддерживаемым в MonoTouch

#c# #iphone #xamarin.ios #nspredicate #nsfetchrequest

#c# #iPhone #xamarin.ios #nspredicate #nsfetchrequest

Вопрос:

Я попробовал следующее, используя NSPredicate, и не получаю ожидаемых результатов:

 NSFetchRequest request = new NSFetchRequest ();
request.Entity = NSEntityDescription.EntityForName("Entity", managedObjectContext);

NSSortDescriptor sort = new NSSortDescriptor ("date", false);
request.SortDescriptors = new NSSortDescriptor[1] { sort };
request.Predicate = NSPredicate.FromFormat("stringProperty == %@", new NSObject[1]{new NSString("someString")});

error = null;
NSObject[] results = managedObjectContext.ExecuteFetchRequest (request, out error);
  

Поддерживается ли NSPredicate в текущей стабильной версии MonoTouch (5.0) или я делаю что-то не так?

Комментарии:

1. Трудно сказать по фрагменту. Вам необходимо опубликовать автономный тестовый пример

2. Спасибо за ответ. Приведенный выше фрагмент отлично работает без строки, задающей предикат. Как только я устанавливаю предикат, я не получаю никаких результатов от выборки (когда я ожидал бы от данных и устанавливаемого предиката). Я решил, что либо предикаты еще не поддерживаются, либо я создаю предикат неправильно. Есть ли какие-либо примеры использования предиката в MonoTouch?

3. Я быстро просмотрел и не нашел ни одного примера кода, так что это может быть ошибка (похоже, она не очень часто используется). Не могли бы вы предоставить нам (здесь или заполнив отчет об ошибке на bugzilla.xamarin.com ) небольшой, автономный тестовый пример, чтобы мы могли попытаться точно определить проблему?

4. Я зарегистрировал ошибку ( bugzilla.xamarin.com/show_bug.cgi?id=2282 ).

Ответ №1:

вау, вы действительно экономите строки программирования здесь. Трудно сказать с этим фрагментом, но… Мое лучшее предложение — разбить эти строки на несколько строк, например

 NSPredicate *myPredicate = ...
if (myPredicate) {
NSLog (@"Predicate exists");
}
  

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

Комментарии:

1. Итак, вы хотите сказать, что установка предиката для запроса выборки работает для вас в MonoTouch?