RestKit 0.20.1 を使用して Restful Web サービスからデータを取得する iOS アプリがあります。アプリが CoreData を使用することも追加する必要があります。アプリが開始されると、メイン画面はデフォルトの検索語が入力されたコレクション ビューになります。ヘッダーには、検索バーとして使用されるテキスト フィールドもあります。
ユーザーが検索バーを使用するときに、以前に読み込まれたセルをクリアするのに問題があります。新しいセルをロードし、前のセルを押し下げるだけです。該当するコードは次のとおりです。
- (BOOL) textFieldShouldReturn:(UITextField *)textField {
//This sets up the NSDictionary for the Restkit postObject parameters
NSArray *objects =[NSArray arrayWithObjects:textField.text, nil];
NSArray *keys =[NSArray arrayWithObjects: @"query",nil];
NSDictionary *params = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
self.search=params;
//This is the POST request to the server
[[RKObjectManager sharedManager] postObject:nil path:@"/rest/search?ip=255.255.255.0" parameters:search success:nil failure:nil];
//This is what I thought would clear out the old and replace with the new
[self.collectionView reloadData];
[textField resignFirstResponder];
return YES;
}
この質問を参照しましたすべてのアイテムを削除して新しいアイテムをUICollectionViewに追加する方法は? そして[collectionView reloadData]
受け入れられた答えでした。
このチュートリアルのtextFieldShouldReturn:
方法を選択しました。また、Apple Developer Library のInserting, Deleting, and Moving Section Itemsも参照しましたが、アイテムの削除メソッドを実装する方法がよくわかりません。
どんな助けでも素晴らしいでしょう。これは明らかに初歩的な質問なので、コード スニペットは非常に役立ちます。
更新: これが私がそれを機能させる方法です。
上記のコードのメソッドとステートメントdeleteAllEntitiesForName
の前に、以下に示すメソッドへの呼び出しを追加しました。postObject
[self.collectionView reloadData]
- (void) deleteAllEntitiesForName:(NSString*)entityName {
NSManagedObjectContext *moc = [self managedObjectContext];
NSEntityDescription *entityDescription = [NSEntityDescription
entityForName:entityName inManagedObjectContext:moc];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
NSError *error = nil;
NSArray *array = [moc executeFetchRequest:request error:&error];
if (array != nil) {
for(NSManagedObject *managedObject in array) {
[moc deleteObject:managedObject];
}
error = nil;
[moc save:&error];
}
}
ここから入手しました:コアデータデータベースを更新する正しい方法