#PRagma mark 检索数据仓库初始化 /** * 检索数据初始化 */ -(void)rebuildDatabase{ //你自己代码里需要检索的数据 NSArray *allmenus = self.mainDelegate.gbdata.objMenu.MenuItemArray; //将自己代码里需要检索的数据对象添加进检索数据仓库,并且关联上name for (MenuItemObject *objmenu in allmenus) { //第一个参数为你需要检索的对象 obj ,第二个为你对象obj.name (例如根据 name.检索) [[PermissiveResearchDatabase sharedDatabase] addRetainedObjet:objmenu forKey:objmenu.displayname]; } }
//1.首先清空搜索结果数组 [self.arraySearchMenu removeAllObjects]; //2.将文本控制用户输入的字符进行简单处理 NSString *final = [textField.text stringByReplacingCharactersInRange:range withString:string]; //3.开始检索 NSLog(@"Start search by matrix"); //4.消除所有 [[ScoringOperationQueue mainQueue] cancelAllOperations]; //5.初始化 ExactScoringOperation *ope = [[ExactScoringOperation alloc] init]; //6.要检索的字符串赋值 ope.searchedString = final; //7.调用检索block 返回检索到的结果 SearchCompletionBlock block = ^(NSArray *results) { dispatch_async(dispatch_get_main_queue(), ^{ //8.注意:这里统一检索出来的对象 都是PermissiveObject //你自己需要的检索出来真在的对象是在PermissiveObject.refencedObject里 NSMutableArray *permissiveObj = [NSMutableArray arrayWithArray:results]; //9.取出检索到你每个需要的数据 然后添加进检索结果的数据 for (PermissiveObject *perobj in permissiveObj) { MenuSearchObject *obj=[[MenuSearchObject alloc]init]; MenuItemObject *objMenu = perobj.refencedObject; //测试log NSLog(@"%@",objmenu.displayname); obj.menuid=[NSNumber numberWithInteger:objMenu.menuid.integerValue]; [self.arraySearchMenu addObject:obj]; // add filter menu objection } //10.刷新显示检索结果的tableView [self.searchTableview reloadData]; NSLog(@"End search by matrix"); }); }; //检索完成 [ope setCustomCompletionBlock:block]; //添加操作 End. [[ScoringOperationQueue mainQueue] addOperation:ope];
如果还有什么不明白欢迎在下面留言,有时间的我回一一回复,谢谢大家。 作者: 清澈Saup