gpt4 book ai didi

iphone - NSMutableArray removeObjectAtIndex : throws invalid argument exception

转载 作者:太空狗 更新时间:2023-10-30 03:34:20 25 4
gpt4 key购买 nike

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

- (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];

导致我的应用程序因以下错误而崩溃:

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'

我试图理解为什么它不起作用,但我做不到。如果我重新启动该应用程序,则新应用程序会在逻辑上正确取消。有什么建议么??提前致谢。


接口(interface):

@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 中:

[dataSet addObject:theNews];

最佳答案

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

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

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

关于iphone - NSMutableArray removeObjectAtIndex : throws invalid argument exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3230770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com