У меня есть NSArray
, содержащий некоторые NSDictionaries
, которые также включают NSDictionary
.
NSDictionary *dict1 = [NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:@"cover" forKey:@"type"] forKey:@"image"];
NSDictionary *dict2 = [NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:@"cover" forKey:@"type"] forKey:@"image"];
NSDictionary *dict3 = [NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:@"back" forKey:@"type"] forKey:@"image"];
NSDictionary *dict4 = [NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:@"cover" forKey:@"type"] forKey:@"image"];
NSArray *myArray = [NSArray arrayWithObjects:dict1, dict2, dict3, dict4, nil];
есть ли способ фильтрации myArray
для всех словарей изображений, где тип f.e. «покрыть» с помощью NSPredicate?
пробовал предикаты, такие как
predicateWithFormat:@"(SELF.image.type == %@)", @"cover"]
или
predicateWithFormat:@"(image.type == %@)", @"cover"]
но безуспешно.
спасибо заранее! оставить комментарий, если что-то неясно
// редактировать
так
NSPredicate *p = [NSPredicate predicateWithFormat:@"image.type == %@", @"cover"];
работает. но в моем случае я хочу отсортировать размер == оригинал. что я сделал, это
NSPredicate *p = [NSPredicate predicateWithFormat:@"image.size == %@", @"original"];
но тогда мое приложение вылетает с
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSSymbolicExpression length]: unrecognized selector sent to instance
и указывает на мой filteredArrayUsingPredicate
метод. я не вижу никакой разницы между типом и размером. см. мой NSLog моего массива здесь
(
{
image = {
height = 1500;
id = 4e5808765e73d607350059b4;
size = original;
type = poster;
url = "someurl";
width = 1000;
};
},
{
image = {
height = 750;
id = 4e5808765e73d607350059b4;
size = mid;
type = poster;
url = "someurl";
width = 500;
};
},
кто-нибудь знает, почему происходит сбой, когда я пытаюсь использовать размер вместо типа?