1
我試圖用nspredicate來找到一個託管對象,它的attribue的值是==我想檢查一個值。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];
我不明白爲什麼一個工作,而另一個不工作。他們都做同樣的事情對嗎?
你已經用謂詞格式的單個'='嘗試過了嗎? – EmptyStack 2011-05-27 12:52:59
試試這個,'[NSPredicate predicateWithFormat:@「%@ =%@」, attributeName,attributeValue]; ' – EmptyStack 2011-05-27 12:54:53
@SImon,我發現我的解決方案,但我會嘗試你也:) – dubbeat 2011-05-27 12:58:52