1

UITableViewCoreData SQLLite データ ソースと を使用してがありNSManagedObjectContextます。

この用語を正しく理解していない場合はご容赦ください。これはまだ数日しか経っていないため、学習中です。

新しい項目をデータ ソースに追加できるように、モーダル ビューの設定を完了しました。したがって、現在の私のロジックは基本的に次のとおりです。アイテムをデータ ソースに追加し、テーブル ビューを更新すると、新しいアイテムが一覧表示されます。

UITableViewCellただし、さらに一歩進んで、その任意の項目がクリックされたときに発生する設定済みのセグエを実行したいと考えています。performSegueWithIdentifier:senderメソッドを使用して、コードでそのセグエを開始します。ただし、送信者は でなければなりUITableViewCellません。

したがって、私が持っているものを考えると、データ ソースに追加したばかりのデータがありますが、データ ソース内の新しいアイテムのインデックスはわかりません。UITableViewCellそのデータを使用して、新しく作成されたアイテムを見つける必要があります。

これを行う方法についてのアイデアはありますか?私は周りを見回してきましたが、私が期待しているように見えるサンプルコードを見たことがありません.

以下は、モーダル ビューから新しいアイテムをデータ ソースに追加するコードです。

#pragma mark - ComposeThreadViewControllerDelegate Methods

- (void)composeThreadViewController:(ComposeThreadViewController *)controller didFinishComposing:(Thread *)thread {

    // get the context
    NSManagedObjectContext *context = [(id)[[UIApplication sharedApplication] delegate] managedObjectContext];

    // add this new thread to our local cache
    NSManagedObject *managedThread = [NSEntityDescription insertNewObjectForEntityForName:@"Thread" inManagedObjectContext:context];

    [managedThread setValue:thread.id forKey:@"id"];
    [managedThread setValue:thread.title forKey:@"title"];
    [managedThread setValue:thread.author forKey:@"author"];
    [managedThread setValue:thread.text forKey:@"text"];
    [managedThread setValue:thread.location forKey:@"location"];

    //save the new thread
    [context save:nil];

    // begin refreshing the list of threads
    [self.tableView reloadData];

    // dismiss the modal view
    [self dismissModalViewControllerAnimated:YES];

    // bring up the view item view
    [self performSegueWithIdentifier:@"viewThreadSegue" sender:self];

}
4

2 に答える 2

1

オブジェクトのインデックス パスが必要なのはなぜですか? これは、オブジェクトの表示を管理するテーブル ビューの実装の詳細です。

オブジェクトが必要な場合は、管理対象オブジェクトを送信者として渡してみませんか?

[self performSegueWithIdentifier:@"viewThreadSegue" sender:managedThread];

これで、performSeque で、マネージド オブジェクトをビュー コントローラーに渡すことができます。あなたがしていることに不自然なインデックス パスですべてのコードを汚染する必要はありません。

注: オブジェクトにその管理オブジェクト コンテキストを要求できます...

managedThread.managedObjectContext
于 2012-08-06T02:47:19.407 に答える
0

Mac OS X 用のココアを研究した私が知っていることから、データ ソース プロトコルを実装する必要はありません。配列コントローラーをインターフェイス ビルダーにドラッグするだけで、ID インスペクターでモードをエンティティ名に設定し、名前を入力できます。作成したデータ ソース エンティティ。この後は、テーブル ビューの各列を、表示するアレイ コントローラーのキーにバインドするだけです。

于 2012-08-06T02:09:48.227 に答える