2011-02-09 121 views
3

此代碼返回0個不正確的對象。但是,刪除謂詞時,獲取請求會返回所有對象。核心數據NSPredicate with SQLITE store

NSError *error = nil; 

NSEntityDescription *entityDescription = [NSEntityDescription            entityForName:@"Person" inManagedObjectContext:[self managedObjectContext]]; 

NSPredicate * pr = [NSPredicate predicateWithFormat:@"%K beginswith '%@' ", 
        @"FullName", searchText]; 

//NSPredicate * pr = [NSPredicate predicateWithFormat:@"PersonID == %@", searchText]; Works fine 


NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; 
[request setEntity:entityDescription]; 
[request setPredicate:pr]; 
NSArray * arr = [[self managedObjectContext] executeFetchRequest:request error:&error]; 

FullName屬性包含unicode數據(阿拉伯語)。

任何幫助表示讚賞。

回答

7

嘗試:

NSPredicate * pr = [NSPredicate predicateWithFormat:@"FullName beginswith %@", searchText]; 
+2

+1使用`%@`替換將自動解釋值作爲一個字符串。不需要圍繞它的單引號。如果您需要添加單引號,則不需要'%K'替換。 – 2011-02-09 18:36:30