gpt4 book ai didi

objective-c - NSPredicate - 无法为谓词生成 SQL,我想知道为什么?

转载 作者:可可西里 更新时间:2023-11-01 05:04:53 25 4
gpt4 key购买 nike

我已经在不了解根本原因的情况下[盲目]解决了我的问题。但我宁愿从专业人士那里了解一个概念。那么您能否告诉我为什么下面相同的代码一个有效而另一个无效。

代码 1:不起作用

//Above code omitted...

NSPredicate * predicate = [NSPredicate predicateWithFormat:@"gender == m"]; //NOTICE HERE
[request setPredicate:predicate];
NSError *error = nil;
self.people = [self.managedObjectContext executeFetchRequest:request error:&error];

//Below code omitted...

代码 2:有效

//Above code omitted...

NSString *type = @"m";
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"gender == %@",type]; //NOTICE HERE
[request setPredicate:predicate];
NSError *error = nil;
self.people = [self.managedObjectContext executeFetchRequest:request error:&error];

//Below code omitted...


忘了告诉我遇到了什么错误,当我执行代码 1 时,我在下面一行得到了 SIGABRT。

 self.people = [self.managedObjectContext executeFetchRequest:request error:&error];

还有一件事,在 GCC 中错误是它无法格式化谓词,因为“gender == m”。


开导我!!

谢谢

最佳答案

参见 predicate programming guide (标题为“文字”)。您可以在字符串中使用文字,但必须将它们括在引号中,所以

NSPredicate * predicate = [NSPredicate predicateWithFormat:@"gender == 'm'"];

本来可以的。当 predicateWithFormat 添加参数时,它知道它是一个字符串。当您只有 m 时,它不知道如何处理它,因此会出现错误。

关于objective-c - NSPredicate - 无法为谓词生成 SQL,我想知道为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7662111/

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