Iss*_*mTP 7 iphone objective-c
我正在编写一个应用程序来显示门户网站的一些新闻.使用来自Internet的JSON文件获取新闻,然后使用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];
}
Run Code Online (Sandbox Code Playgroud)
这条线:
[dataSet removeObjectAtIndex:indexPath.row];
导致我的应用程序崩溃,出现以下错误:
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'
我试图理解为什么它不起作用但我不能.如果我重新启动应用程序,则会正确地以逻辑方式取消新应用程序.有什么建议??提前致谢.
接口:
@interface ListOfVideo : UITableViewController <NSFetchedResultsControllerDelegate> {
NSMutableArray *dataSet;
}
@property (nonatomic, retain) NSMutableArray *dataSet;
// In the .m file:
@synthesize dataSet;
Run Code Online (Sandbox Code Playgroud)
初始化viewDidLoad:
dataSet = (NSMutableArray *) [[NewsFetcher sharedInstance]
fetchManagedObjectsForEntity:@"News"
withPredicate:predicate
withDescriptor:@"Titolo"];
[dataSet retain];
Run Code Online (Sandbox Code Playgroud)
updateDatabase ...这是从网上检查新消息时,我将它们添加到MutableArray中:
[dataSet addObject:theNews];
Run Code Online (Sandbox Code Playgroud)
Geo*_*che 23
你NewsFetcher返回一个不可变数组,而不是一个可变实例.使用以下代码进行初始化:
NSArray *results = [[NewsFetcher sharedInstance]
fetchManagedObjectsForEntity:@"News"
withPredicate:predicate
withDescriptor:@"Titolo"];
dataSet = [results mutableCopy];
Run Code Online (Sandbox Code Playgroud)
表达式A *a = (A*)b;只会将指针强制转换为其他类型 - 它不会转换/更改它指向的实例的实际类型.
验证dataSet是否为NSMutableArray.抛出异常是因为它没有响应removeObjectAtIndex.
| 归档时间: |
|
| 查看次数: |
7885 次 |
| 最近记录: |