gpt4 book ai didi

ios - 具有多个语句的 NSPredicate

转载 作者:行者123 更新时间:2023-12-01 17:42:02 25 4
gpt4 key购买 nike

我有 NSPredicate有四个语句/参数。似乎所有这些都没有“包含”。它看起来像这样:

predicate = [NSPredicate predicateWithFormat:@"user.youFollow = 1 || user.userId = %@ && user.youMuted = 0 && postId >= %d", [AppController sharedAppController].currentUser.userId, self.currentMinId.integerValue];

好像是最后一部分: && postId >= %d , 被忽略。如果我尝试:
predicate = [NSPredicate predicateWithFormat:@"user.youFollow = 1 || user.userId = %@ && user.youMuted = 0 && postId = 0", [AppController sharedAppController].currentUser.userId, self.currentMinId.integerValue];

我得到相同的结果(应该是 0)。我想知道这样的谓词应该是什么样子?

最佳答案

正如讨论中证明的那样,真正的问题是谓词用于
获取的结果 Controller ,并且谓词中使用的变量随时间变化。

在这种情况下,您必须重新创建谓词和获取请求。这是记录在案的
“修改获取请求”NSFetchedResultsController Class Reference .

所以在你的情况下,如果 self.currentMinId改变,你应该

// create a new predicate with the updated variables:
NSPredicate *predicate = [NSPredicate predicateWithFormat:...]
// create a new fetch request:
NSFetchRequest *fetchRequest = ...
[fetchRequest setPredicate:predicate];

// Delete the section cache if you use one (better don't use one!)
[self.fetchedResultsController deleteCacheWithName:...];

// Assign the new fetch request and re-fetch the data:
self.fetchedResultsController.fetchRequest = fetchRequest;
[self.fetchedResultsController performFetch:&error];

// Reload the table view:
[self.tableView reloadData];

关于ios - 具有多个语句的 NSPredicate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15985523/

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