如何搜索完整的核心数据库

时间:2011-08-13 23:36:12

标签: iphone objective-c uitableview core-data nsfetchedresultscontroller

我有一个搜索功能,我想搜索整个核心数据库。

我有4个实体,所有这些实体都是NSManagedObject MedicalCode的子类。

 - (void) loadDatabase
    {
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"MedicalCode" inManagedObjectContext:managedObjectContext]; 
        NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; 
        [request setEntity:entityDescription]; 
        NSError *error = nil; 
        NSArray *array = [managedObjectContext executeFetchRequest:request error:&error];
    }

    - (void) searchTableView {

        NSString *searchText = searchBar.text;
        NSMutableArray *searchArray = [[NSMutableArray alloc] init];

        for (NSDictionary *dictionary in myArray)
        {
            NSString *value = [dictionary valueForKey:@"name"];
            [searchArray addObject:value];
        }

        for (NSString *sTemp in searchArray)
        {
            NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch];

            if (titleResultsRange.length > 0)
                [copyListOfItems addObject:sTemp];
        }
        [searchArray release];
        searchArray = nil;
    }

这里的问题是,我认为我不会将实际对象本身添加到副本列表中,而是仅添加name属性。此外,它落后于iPhone。有什么建议吗?

编辑:

或者有没有办法将它与NSFetchedResultsController联系起来并走那条路?

1 个答案:

答案 0 :(得分:1)

您需要在NSFetchRequest中添加NSPredicate。