gpt4 book ai didi

iphone - NSPredicate ==查询

转载 作者:行者123 更新时间:2023-12-01 18:33:00 28 4
gpt4 key购买 nike

我正在尝试使用nspredicate来查找其属性的值等于==的托管对象,该值我想检查。

我肯定知道该值在我的数据模型中。

到目前为止,这是我尝试过的方法,但是结果数组的计数始终为零。

-(BOOL)checkIfFavouriteExists:(NSString *)data
{
BOOL returnvalue;

NSFetchRequest *fetchReq = [[NSFetchRequest alloc]init];

NSString *attributeName = @"userid";
NSString *attributeValue = data;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K == '%@'",
attributeName, attributeValue];

//setting the predicate to the fetch request
[fetchReq setPredicate:predicate];

[fetchReq setEntity:[NSEntityDescription entityForName:@"Favourites" inManagedObjectContext:self.managedObjectContext]];

NSMutableArray *resultArray = [[NSMutableArray alloc]initWithArray:[self.managedObjectContext executeFetchRequest:fetchReq error:nil]];

if([resultArray count]>0)
{
returnvalue=YES;

} else
{
NSLog(@"No records");
returnvalue=NO;
}

return returnvalue;
}

编辑

问题似乎出在我的查询格式上。

这可行吗?
NSExpression *exprName = [NSExpression expressionForKeyPath:@"userid"];
NSExpression *exprVal = [NSExpression expressionForConstantValue:data];
NSPredicate *predicate = [NSComparisonPredicate predicateWithLeftExpression:exprName
rightExpression:exprVal
modifier:NSDirectPredicateModifier
type:NSEqualToPredicateOperatorType
options:0];

我不明白为什么一个有效,而另一个无效。他们俩都做同样的事吧?

最佳答案

不要将变量放在引号中。 documentation on Parser Basics指出:

单引号或双引号变量(或
替换变量字符串)原因
%@,%K或$ variable将被解释
作为格式字符串中的文字,并且
因此,防止任何替代。

应该这样做:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userid == %@", attributeValue];

您可以在 Predicate Programming Guide中阅读有关谓词的更多信息。

关于iphone - NSPredicate ==查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6152327/

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