0

Core Data を使用して、以前の検索を SearchBar に保存しています。私のエンティティは非常に単純で、プロパティを持っているだけです:

previousSearch (NSString)

ユーザーが検索バーに入力すると、以前の検索でデータベースを検索したいと思います。しかし、私は0の結果を得続けています。

Core Data からデータを取得するコードを次に示します。

- (void)filterContentForSearchText:(NSString *)searchText {
    [self.filteredLastSearches removeAllObjects];

    NSEntityDescription *search = [NSEntityDescription entityForName:@"Search" inManagedObjectContext:_managedObjectContext];
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    [fetchRequest setEntity:search];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"previousSearch=[c]%@", searchText];
    [fetchRequest setPredicate:predicate];

    NSError *error = nil;
    NSArray *fetchedObjects = [_managedObjectContext executeFetchRequest:fetchRequest error:&error];
    if (error) {
        NSLog(@"Error filtering search: %@", [error description]);
    }

    _filteredLastSearches = [NSMutableArray arrayWithArray:fetchedObjects];
}

fetchedObjects は常に空で、その理由はわかりません。データベースには、検索中に表示しようとしたいくつかの値を持つ ZPREVIOUSSEARCH が実際にあることがわかりますが、常に空です。足りないものはありますか?前もって感謝します。

4

1 に答える 1

0
  1. =オペレーターが で動作するかどうかはわかりません[c]like代わりに使用してみてください:

    [NSPredicate predicateWithFormat:@"previousSearch like[c] %@", searchText];
    
  2. また、同じ結果ではなく、テキストを含む (またはテキストで始まる) 結果を検索することもできます。この場合、containsまたはを使用できbeginswithます。

    [NSPredicate predicateWithFormat:@"previousSearch contains[c] %@", searchText];
    [NSPredicate predicateWithFormat:@"previousSearch beginswith[c] %@", searchText];
    
于 2013-10-04T05:53:59.687 に答える