1

クライアントの多くの予定の 1 つを、IB で予定の ArrayController にバインドされたボタンで追加または削除するコア データ アプリがあります。予定のコンテンツは、フィード リストで選択されたクライアントから取得されます。SegmentedControl を使用したいのですが、私が知る限り、予定のオブジェクトをプログラムで追加および削除する必要があります。Marcus Zarra の著書 Core Data on p54 のコードを使用して予定を追加することに成功しましたが、選択した予定を削除する方法がわかりません。カスタム テーブル セルを使用していますが、これが問題を複雑にしている可能性があります。

要するに、選択したオブジェクトで ArrayController の remove: メソッドに相当するものをプログラムで実現したいと考えています。

誰か助けてくれませんか?

4

2 に答える 2

1

ありがとう、マーティン。私のコードは最終的に次のようになりました。

-(IBAction) notesEditorSegClicked:(id)sender{
    int clickedSegment = [sender selectedSegment];
    switch (clickedSegment) {
        case 0:{ // add new object
            NSManagedObject *newNote = [NSEntityDescription
            insertNewObjectForEntityForName:@"Note"
            inManagedObjectContext:notes.managedObjectContext];
            [notes addObject:newNote];
            break;
        }
        case 1:{ // delete selected object
            NSArray *objectsToDelete = [notes selectedObjects];
            for (NSManagedObject* objectToDelete in objectsToDelete){
                [notes.managedObjectContext deleteObject:objectToDelete];
            }
            break;
        }
        case 2:{// close view
            [self loadClientSummary:sender];
            break;
        }
    }
}
于 2010-07-15T06:20:35.363 に答える
0

UI にバインドされた ArrayController から現在の選択を取得します

- (NSArray *)selectedObjects

コンテキストを使用してそれらのオブジェクトを削除します

-(void) deleteObject:(NSManagedObject*) object

サンプル:

NSArray* objectsToDelete = [NSArray arrayWithArray:[arrayController selectedObject]];
for (NSManagedObject* objectToDelete in objectsToDelete)
{
  [arrayController.managedObjectContext deleteObject:objectToDelete];
}
于 2010-06-25T10:24:32.220 に答える