1

我用带有字典的 plist 数组填充我的应用程序。字典中键“新鲜度”的值是捆绑图像的名称,用于显示饮料的新鲜度,“level1.png”、“level2.png”、“level3.png”、“level4.png” ”、“level5.png”、“level6.png”或“level7.png”。

我添加了一个 UIStepper,因此用户可以像这样指定饮料的最小和最大新鲜度:

- (void)viewDidLoad
{
[super viewDidLoad];
minImageView.image = [UIImage imageNamed:@"level1.png"];
maxImageView.image = [UIImage imageNamed:@"level7.png"];
}

- (IBAction)minStepperValueChanged:(id)sender {
double stepperValue = minStepper.value;
minImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"level%.f.png", stepperValue]];
maxStepper.minimumValue = minStepper.value;
minStepper.maximumValue = maxStepper.value;
minLabel.text = [NSString stringWithFormat:@"From level %.f", stepperValue];
}

- (IBAction)maxStepperValueChanged:(id)sender {
double stepperValue = maxStepper.value;
maxImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"level%.f.png", stepperValue]];
maxStepper.minimumValue = minStepper.value;
minStepper.maximumValue = maxStepper.value;
maxLabel.text = [NSString stringWithFormat:@"To level %.f", stepperValue];
}

searchButtonPressed被调用时,猜猜我想要发生什么。将具有正确新鲜度级别的对象添加allObjectsArraysearchResultsArray。有什么建议可以像这样过滤代码吗?

我正在考虑使用levelsArray具有所有级别图像路径的可变数组,然后从levelsArraywhen中删除低于最小值或高于最大值的对象searchButtonPressed

然后将与该数组的剩余对象之一匹配的字典添加到searchResultsArray. 但是我在这方面已经扭曲了我的大脑,我真的需要一些帮助。非常感谢!

编辑:

我已经这样做了:

-(IBAction)searchButtonPressed:(id)sender{

for(double i=otherCriteriasViewController.minStepper.value;i>1;i--) {
    [otherCriteriasViewController.levelsArray removeObject:[NSString stringWithFormat:@"level%.f.png", i-1]];
}

for(double ii=otherCriteriasViewController.maxStepper.value;ii<7;ii++) {
    [otherCriteriasViewController.levelsArray removeObject:[NSString stringWithFormat:@"level%.f.png", ii+1]];
}

现在我想添加所有包含levelsArray 对象之一的对象。

4

1 回答 1

1

如果我理解正确,您要解决的问题是根据每个字典中的键过滤字典数组。

您可以使用 anNSPredicate来执行此操作。

假设您有一个名为“allItems”的 NSArray,并且数组中的每个对象都是包含键“Freshness”的字典。

假设您想要所有新鲜度为 2 的项目。

NSArray *filtered = [allItems filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(Freshness == %@)", @"level2.png"]];

您还可以使用 NSPredicates 进行大于和小于比较。这只是一个平等的例子。

于 2012-11-12T01:29:45.693 回答