0

「編集」ボタンを押してから「削除」ボタンを押すと、テーブル ビューで選択したコア データ要素を削除しようとしています。私はこれを行うことができないようです。
私の最後の方法は、削除する場所です。削除ボタンが押されたときにそのメソッドが正常に呼び出されましたが、「「WebBrowser」で目に見える@interfaceがセレクター「deleteObject」を宣言していません」というエラーが表示され続けます

これが私のコードの一部です。

#import "WebTableViewController2.h"

#import "WebBrowser.h"
#import CoreData/CoreData.h 
#import "EditViewController.h"

@interface WebTableViewController2 ()

@property UIManagedDocument *webDocument;
@property NSFetchedResultsController *resultsController;
@end

@implementation WebTableViewController2

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString *fileName = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent: @"WebDB.db"];
    NSURL *fileURL = [NSURL fileURLWithPath: fileName];
    self.webDocument = [[UIManagedDocument alloc] initWithFileURL:fileURL];

    if (![[NSFileManager defaultManager] fileExistsAtPath:fileName])
    {
        [self.webDocument saveToURL:fileURL forSaveOperation: UIDocumentSaveForCreating completionHandler:^(BOOL success)
         {
             if(!success) NSLog(@" Database creation failed");
             [self fetchData];
         }];
    }else
    {
        [self.webDocument openWithCompletionHandler:^(BOOL success)
         {
             if(!success) NSLog(@" Database opening failed");
             [self fetchData];
         }];
    }


}

-(void)viewWillAppear:(BOOL)animated
{
    self.navigationItem.leftBarButtonItem = self.editButtonItem;    
}

- (void) fetchData
{

    NSFetchRequest *request= [NSFetchRequest fetchRequestWithEntityName: @"WebBrowser"];
    request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name1" ascending:YES]];
    self.resultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:
                              self.webDocument.managedObjectContext sectionNameKeyPath:Nil cacheName:Nil];

    self.resultsController.delegate = self;

    /*
     NSError *error = nil;
     NSUInteger count = [self.webDocument.managedObjectContext countForFetchRequest:request error:&error];
     //[request release];
     NSLog(@"this is the number in data base: %i", count);
     */

    NSError *error = nil;

    if([self.resultsController performFetch: &error]){
        [self.tableView reloadData];
    }else{
        NSLog(@"Could not fetch data: %@, %@", error, error.userInfo);
    }

}

-(void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    //deleting goes here
    NSLog(@"deleting");
    WebBrowser *webBrowser = [self.resultsController objectAtIndexPath:indexPath];
    [webBrowser deleteObjectat:indexPath.row];

}
4

2 に答える 2

0

私がそれをした方法はの中にありますcommitEditingStyle

if (editingStyle == UITableViewCellEditingStyleDelete) {


        Entity *loopEntity = [self.tableArray objectAtIndex:indexPath.row];


        // Delete the managed object at the given index path.
    NSManagedObject *eventToDelete = [self.tableArray objectAtIndex:indexPath.row];
    [self.context deleteObject:eventToDelete];

        // Update the array and table view.
    [self.tableArray removeObjectAtIndex:indexPath.row];
    [self.ammoTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];

        // Commit the change.
    NSError *error = nil;
    if (![self.context save:&error]) {
            // Handle the error.
    }
}
于 2013-05-23T15:22:39.457 に答える