Objective c 如何通过Objective C中的tableview从NSArray中删除对象?

Objective c 如何通过Objective C中的tableview从NSArray中删除对象?,objective-c,uitableview,nsarray,Objective C,Uitableview,Nsarray,首先,我想从我对目标C还不熟悉开始,这是我第一次在目标C中发展。由于某种原因,我一直在思考如何通过我的表视图(其中包含对象)从NSArray中删除对象。尝试了一些不同的事情,但似乎我有点卡住了。。。我应该在下面的代码中添加什么 bookmarks.m - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(N

首先,我想从我对目标C还不熟悉开始,这是我第一次在目标C中发展。由于某种原因,我一直在思考如何通过
我的表视图
(其中包含对象)从
NSArray
中删除对象。尝试了一些不同的事情,但似乎我有点卡住了。。。我应该在下面的代码中添加什么

bookmarks.m

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]withRowAnimation:YES]; 
    [tableView reloadData];    
}
Bookmarks.h

#import <UIKit/UIKit.h>

#import "ShowTaskViewController.h"

#import "Bookmark.h"

@interface BookmarksViewController : UITableViewController  <UITableViewDelegate,UITableViewDataSource>
{
    NSArray *bookmarks;
}

@property (nonatomic, retain) NSArray *bookmarks;

@end
#导入
#导入“ShowTaskViewController.h”
#导入“Bookmark.h”
@界面书签ViewController:UITableViewController
{
NSArray*书签;
}
@属性(非原子,保留)NSArray*书签;
@结束

tableView无法管理您的内容。你必须自己做。当用户点击行上的delete时,您必须从数组中删除该项,并通知表视图以删除单元格(带有动画)

我建议您将数据数组更改为NSMutableArray。然后你可以这样做:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{

    [bookmarks removeObjectAtIndex:indexPath.row];
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
                     withRowAnimation:YES]; 
}
或者,您可以临时创建NSMutableArray

NSMutableArray *mutableBookmarks = [NSMutableArray arrayWithArray:bookmarks];
[mutableBookmarks removeObjectAtIndex:indexPath.row];
self.bookmarks = [NSArray arrayWithArray:mutableBookmarks];