gpt4 book ai didi

ios - 如何将谓词转换为 SQL 语句?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:11 28 4
gpt4 key购买 nike

从服务器收集数据 3 天后,我的 iOS 应用程序出现问题。我正在尝试查明问题所在,但不知道是数据损坏问题还是代码中的问题。

我已经将 iOS 数据库下载到我的 Mac 上,并且可以对其运行 sql 语句。

有没有办法将以下谓词“转换”为SQL语句,以便我可以验证数据?

    NSMutableArray *predicates = [[NSMutableArray alloc] init];
NSDate *twoWeeksago = [[NSCalendar autoupdatingCurrentCalendar] dateByAddingUnit:NSCalendarUnitDay
value:-14
toDate:[NSDate date]
options:0];
[predicates addObject:[NSPredicate predicateWithFormat:@"isRemoved == 0"]];
[predicates addObject:[NSPredicate predicateWithFormat:@"(publicationDatetime >= %@) AND (publicationDatetime <= %@)", twoWeeksago, [NSDate date]]];
[predicates addObject:[NSPredicate predicateWithFormat:@"(source == %@) OR (source == %@)", @"BBC", @"Guardian"]];
NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicates];

最佳答案

好吧,这里有点瞎猜,因为我不知道它对你和我的 Objective C 有什么问题,谓词知识有限,但我认为你最终得到的是:

where removed = 0
and (publicationDatetime >= 2weeksAgo) AND (publicationDatetime <= today)
and (source = 'BBC') OR (source = 'Guardian')

现在我认为它可能会给您带来意想不到的结果的地方是在 OR 部分。它基本上是说它将带回满足以下条件的记录:

removed = 0
(publicationDatetime >= 2weeksAgo)
(publicationDatetime <= today)
(source = 'BBC')

OR

(source = 'Guardian')

我认为你需要改变的是:

(source = 'BBC') OR (source = 'Guardian')

为此:

((source = 'BBC') OR (source = 'Guardian'))

将它们放在另一组括号中意味着必须满足所有其他条件,并且还必须满足“BBC”或“Guardian”中的任何一个。

关于ios - 如何将谓词转换为 SQL 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30523709/

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