我有一个包含一些NSDictionaries
的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];
有没有一种方法可以使用NSPredicate过滤
myArray
中的所有图像字典,其中类型为"cover"等。尝试像以下这样的谓词: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;
};
},
有人知道为什么我尝试使用 size 而不是 type 时,它会崩溃吗?