我有一个表“存储”的属性“名称”类型的字符串(索引检查排序查询和搜索)。 我想执行一个类似于SQL的查询来查找名称以子字符串开头的所有商店。NSPredicate和BEGINSWITH与CloudKit:字段值类型不匹配
所以,我想这个谓词:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY name BEGINSWITH %@",substring];
CKQuery *query = [[CKQuery alloc]initWithRecordType:@"Store" predicate:pred];
CKQueryOperation *queryOperation = [[CKQueryOperation alloc] initWithQuery:query];
queryOperation.desiredKeys = @[@"name",@"category"];
NSMutableArray *results = [[NSMutableArray alloc] init];
queryOperation.recordFetchedBlock = ^(CKRecord *record) {
[results addObject:record];
};
queryOperation.queryCompletionBlock = ^(CKQueryCursor *cursor, NSError *error) {
//my own code
}
[publicDatabase addOperation:queryOperation];
我有这样的错误:
<CKError 0x1887a540: "Invalid Arguments" (12/1009); "Field value type mismatch in query predicate for field 'name'"> for query : <CKQuery: 0x18882650; recordType=Store, predicate=ANY name BEGINSWITH "mysubstring">
好的谢谢,但我怎么能执行一个查询来查找所有与“我的”子字符串“开始”名称“或”类别“的商店? – 2014-11-17 22:50:16
@John我不确定你是否可以直接做。您可以尝试全文搜索,如另一个答案所示,或者您可以创建一个新字段,该字段是一个字符串数组。然后,您可以使用ANY:“ANY searchableFields BEGINSWITH%@”,其中searchableFields是记录中的一个新字段,它是一个包含两个元素(名称和类别)的数组。 – 2014-11-18 02:54:18