gpt4 book ai didi

ios - 通过 UiControls 过滤 CoreData 记录的最佳实践

转载 作者:行者123 更新时间:2023-11-29 11:14:01 24 4
gpt4 key购买 nike

我正在构建一个应用程序,用户可以在其中根据 4 个参数过滤一组照片:

model http://seismicdevelopment.com/shot.png

FeedType 和 PhotoType 可以分别是三个可能值之一。 Market 和 Tag 可以包含描述照片的多个值。我有 ui 设置,其中 FeedType/PhotoType 是每个参数的一系列 UISwitch。如果您打开一个值,则该组中的其他值将关闭。

Market/Tag 具有可以选中/正常的 UIButton。应将任何选定的按钮添加到过滤中以缩小结果范围。

我似乎无法弄清楚我应该如何编写最有效的过滤逻辑。基本上在任何控件更改时,我都需要重写谓词过滤器,但我似乎无法理解如何将单独的参数过滤器链接在一起。

对于标签/市场,我还想为没有记录的 UIButton 添加禁用状态,或者基于当前选定的按钮没有记录。

最佳答案

在不知道参数是什么类型的情况下很难说出准确的建议,但是,据我所知,你需要有四个变量,更有可能是 NSStrings,并且每次用户更改参数时,你通过使用正确的格式附加所有变量来创建一个新的获取谓词。这就是我的总体看法。

更新

因此,对于 Market 和 Tag 按钮,一切都非常明显 - 您应该使用 NSCompondPredicate。您将需要一组谓词,因此创建一个属性。

@property (strong) NSMutableArray *subpredicates;

然后,每次用户触摸按钮时,您都会添加或删除该缩小谓词。

- (void)tagButtonTouched:(UIButton *)button
{
if (thisTagIsNotYetSelected)
[subpredicates addObject:[NSPredicate predicateWithFormat:@"ANY tags.name == %@", button.titleLabel.text]];//or some other predicate based on that button title
else
[subpredicates removeObject:[NSPredicate predicateWithFormat:@"ANY tags.name == %@",button.titleLabel.text] ]];
}

对于 Markets 也是一样的

 - (void)marketButtonTouched:(UIButton *)button
{
if (thisMarketIsNotYetSelected)
[subpredicates addObject:[NSPredicate predicateWithFormat:@"ANY markets.name == %@", button.titleLabel.text]];//or some other predicate based on that button title
else
[subpredicates removeObject:[NSPredicate predicateWithFormat:@"ANY markets.name == %@",button.titleLabel.text] ]];
}

我猜你还应该添加两个变量,NSPredicatesNSString,它们将保存所选 FeedType 的值PhotoType,我们分别称它们为feedTypePredicatephotoTypePredicate。当用户触摸这些开关时(为什么不使用 segmentedControls?),您只需更改它们的值即可。

最后,您应该将所有这些谓词组合成一个并进行抓取!

if(photoTypePredicate)
[subpredicates addObject:photoTypePredicate];
if(feedTypePredicate)
[subpredicates addObject:feedTypePredicate];
NSPredicate *finished = [NSCompoundPredicate andPredicateWithSubpredicates:subpredicates];//Your final predicate

关于ios - 通过 UiControls 过滤 CoreData 记录的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10257367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com