NSMutableArray removeObjectAtIndex:抛出无效的参数异常

编程入门 行业动态 更新时间:2024-10-09 18:18:04
本文介绍了NSMutableArray removeObjectAtIndex:抛出无效的参数异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在编写一个应用程序来显示门户网站的一些新闻。使用来自Internet的JSON文件获取新闻,然后使用CoreData模型将其存储到NSMutableArray中。显然,用户无法从Internet上的JSON文件中删除新闻,但他可以在本地隐藏它们。问题出现在这里,我有以下代码:

I'm writing an application to show some news from a portal. The news are fetched using a JSON file from the Internet and then stored into a NSMutableArray using the CoreData Model. Obviously a user can't delete the news from the JSON file on the Internet, but he can hide them locally. The problems come out here, where I have the following code:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { if( !moc ){ moc = [[NewsFetcher sharedInstance] managedObjectContext]; } [[dataSet objectAtIndex:indexPath.row] setEliminata:[NSNumber numberWithBool:YES]]; NSError *error; if( ![moc save:&error] ){ NSLog( @"C'è stato un errore!" ); } [dataSet removeObjectAtIndex:indexPath.row]; [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; }

行:

[dataSet removeObjectAtIndex:indexPath.row];

[dataSet removeObjectAtIndex:indexPath.row];

导致我的应用崩溃出现以下错误:

cause my apps to crash with the following error:

2010-07-12 19:08:16.021 ProvaVideo [284:207] * - [_ PFArray removeObjectAtIndex:]:无法识别的选择器发送到实例0x451c820 2010-07-12 19:08:16.022 ProvaVideo [284:207] * 由于未捕获的异常终止 app 'NSInvalidArgumentException',原因:'*** - [_ PFArray removeObjectAtIndex:]:无法识别的选择器发送到实例 0x451c820 '

2010-07-12 19:08:16.021 ProvaVideo[284:207] * -[_PFArray removeObjectAtIndex:]: unrecognized selector sent to instance 0x451c820 2010-07-12 19:08:16.022 ProvaVideo[284:207] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[_PFArray removeObjectAtIndex:]: unrecognized selector sent to instance 0x451c820'

我试图理解为什么它不起作用但我不能。 如果我重新启动应用程序,新的内容将被正确地取消。 有什么建议吗?提前致谢。

I'm trying to understand why it doesn't work but I can't. If I re-launch the app, the new is correctly logically cancelled. Any suggestions?? Thanks in advance.

接口:

@interface ListOfVideo : UITableViewController <NSFetchedResultsControllerDelegate> { NSMutableArray *dataSet; } @property (nonatomic, retain) NSMutableArray *dataSet; // In the .m file: @synthesize dataSet;

中的初始化viewDidLoad :

dataSet = (NSMutableArray *) [[NewsFetcher sharedInstance] fetchManagedObjectsForEntity:@"News" withPredicate:predicate withDescriptor:@"Titolo"]; [dataSet retain];

updateDatabase ...这是在检查时对于来自网络的新消息,我将它们添加到MutableArray中:

updateDatabase ... this is when checking for new news from the net, I add them in the MutableArray:

[dataSet addObject:theNews];

推荐答案

您的 NewsFetcher 返回一个不可变数组,而不是一个可变实例。使用以下代码进行初始化:

Your NewsFetcher returns you an immutable array, not a mutable instance. Use the following instead for initialization:

NSArray *results = [[NewsFetcher sharedInstance] fetchManagedObjectsForEntity:@"News" withPredicate:predicate withDescriptor:@"Titolo"]; dataSet = [results mutableCopy];

像这样的表达式A * a =(A *)b; 仅将指针强制转换为其他类型 - 它不会转换/更改它指向的实例的实际类型。

An expression like A *a = (A*)b; only casts the pointer to a different type - it doesn't convert/change the actual type of the instance it points to.

更多推荐

NSMutableArray removeObjectAtIndex:抛出无效的参数异常

本文发布于:2023-11-28 17:02:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1643235.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:抛出   异常   参数   NSMutableArray   removeObjectAtIndex

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!