2011-12-21 6 views
1

Как использовать NSPredicate для фильтрации массива, где объект в переменной массива -> _ title равен заголовку переменной? Я попробовал следующее ниже, но это ничего не фильтрует.NSPredicate filter array

NSMutableArray *array = [[posts mutableCopy] autorelease]; 
NSString *title = [[TBForrstr sharedForrstr] stringForPostType:type]; 
[array filterUsingPredicate:[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"SELF->_title == %@", title]]]; 

ответ

1

Убедитесь, что название соответствует точно в массиве. Или, если вы хотите быть более гибкими, сделать это без учета регистра:

NSMutableArray *array = [[posts mutableCopy] autorelease]; 
NSString *title = [[TBForrstr sharedForrstr] stringForPostType:type]; 
[array filterUsingPredicate:[NSPredicate predicateWithFormat:@"_title == [cd]%@", title]]; 
+0

'stringWithFormat:' на самом деле не является необходимо, просто используйте 'predicateWithFormat:' прямо! – V1ru8

+0

Мой плохой. Копировать/вставить: D. Исправлена. – Jeremy

0

Просто использовать что-то вроде:

[NSPRedicate predicateWithFormat:@"title LIKE %@",title] 

Заголовок должен быть согласован с вашим _title Ивар через КВЦ

+0

_title является публичной переменной. –

+0

Что это должно делать с публикой? но я думаю, что это просто название LIKE% @, а не _title. http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/Compliant.html#//apple_ref/doc/uid/20002172-BAJEAIEE – V1ru8

1

Это один работает для меня - обратите внимание на одинарные кавычки строки:

NSArray *posts = [NSArray arrayWithObjects: 
    [NSDictionary dictionaryWithObjectsAndKeys: @"Cat or dog?", @"_title", nil], 
    [NSDictionary dictionaryWithObjectsAndKeys: @"I saved a file, where is it?", @"_title", nil], 
    [NSDictionary dictionaryWithObjectsAndKeys: @"How should I do this?", @"_title", nil], 
nil]; 

NSMutableArray *array = [[posts mutableCopy] autorelease]; 
NSString *title = @"Cat or dog?"; 
[array filterUsingPredicate:[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"SELF._title == '%@'", title]]]; 

NSLog(@"%@", array);