您好我正在关注本网站的教程。 http://www.appcoda.com/ios-programming-rss-reader-tutorial/
一旦完成,我运行它,我得到一个线程1:信号SIGABRT。
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
我在上面的这一行得到了错误。
这是我的完整代码,不是我的,但他们是拥有该网站的人。
主文件
//
// APPMaster.m
// fcffv
//
// Created by Ajay Venkat on 7/09/2014.
// Copyright (c) 2014 AJTech. All rights reserved.
//
#import "APPMaster.h"
#import "APPDetail.h"
@interface APPMaster () {
NSXMLParser *parser;
NSMutableArray *feeds;
NSMutableDictionary *item;
NSMutableString *title;
NSMutableString *link;
NSString *element;
}
@end
@implementation APPMaster
- (void)viewDidLoad {
[super viewDidLoad];
feeds = [[NSMutableArray alloc] init];
NSURL *url = [NSURL URLWithString:@"http://images.apple.com/main/rss/hotnews/hotnews.rss"];
parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return feeds.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.textLabel.text = [[feeds objectAtIndex:indexPath.row] objectForKey: @"title"];
return cell;
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
element = elementName;
if ([element isEqualToString:@"item"]) {
item = [[NSMutableDictionary alloc] init];
title = [[NSMutableString alloc] init];
link = [[NSMutableString alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if ([element isEqualToString:@"title"]) {
[title appendString:string];
} else if ([element isEqualToString:@"link"]) {
[link appendString:string];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([elementName isEqualToString:@"item"]) {
[item setObject:title forKey:@"title"];
[item setObject:link forKey:@"link"];
[feeds addObject:[item copy]];
}
}
- (void)parserDidEndDocument:(NSXMLParser *)parser {
[self.tableView reloadData];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSString *string = [feeds[indexPath.row] objectForKey: @"link"];
[[segue destinationViewController] setUrl:string];
}
}
@end
标头文件
//
// APPMaster.h
// fcffv
//
// Created by Ajay Venkat on 7/09/2014.
// Copyright (c) 2014 AJTech. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface APPMaster : UITableViewController <NSXMLParserDelegate>
@property (strong, nonatomic) IBOutlet UITableView *tableView;
@end
希望你能提供帮助。 感谢。
如果你真的有足够的时间在这里是完整的项目
https://www.mediafire.com/?ebajcg33gkl2jf3
由于
答案 0 :(得分:2)
我将你的代码复制并粘贴到一个Xcode文件中,结果很好......有些东西你应该仔细检查一下......
希望这会有所帮助...
答案 1 :(得分:0)
我通过添加静态NSString来解决这个问题。
static NSString *CellIdentifier = @"Cell";
这是在“.m”文件
中实施之前 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
这就是我改变了,是的。就像user3192218说的那样,我改变了标识符以匹配故事板并且它有效。