gpt4 book ai didi

ios - 解析 RSS Feed 的摘要导致应用程序崩溃

转载 作者:行者123 更新时间:2023-11-29 02:57:39 25 4
gpt4 key购买 nike

我正在尝试向正在解析 RSS 提要的 UITableView 添加摘要。我已经设置了一种获取摘要的方法,但应用程序崩溃了。受害行是:

[item setObject:summary forKey:@"summary"];

崩溃代码:

2014-05-17 09:32:09.231 ***[1169:90b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: summary)'
*** First throw call stack:
(
0 CoreFoundation 0x0453a1e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x037bd8e5 objc_exception_throw + 44
2 CoreFoundation 0x045c3eb8 -[__NSDictionaryM setObject:forKey:] + 888
3 *** 0x0010367a -[*** parser:didEndElement:namespaceURI:qualifiedName:] + 394
4 Foundation 0x034ac991 _endElementNs + 363
5 libxml2.2.dylib 0x00626788 xmlParseEndTag2 + 744
6 libxml2.2.dylib 0x00628bf8 xmlParseTryOrFinish + 3347
7 libxml2.2.dylib 0x00627cfa xmlParseChunk + 886
8 Foundation 0x034aa8fb -[NSXMLParser parseData:] + 329
9 Foundation 0x034aac17 -[NSXMLParser parseData:] + 1125
10 Foundation 0x034aadf1 -[NSXMLParser parseFromStream] + 287

主要代码:

 - (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"];
[item setObject:summary forKey:@"summary"];
[feeds addObject:[item copy]];

}

}
- (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];
summary = [[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];
}else if ([element isEqualToString:@"summary"]) {
[summary appendString:string];
}

}

这是什么问题??我可以理解代码是说没有返回 nil,那么我应该用什么代替摘要??

干杯,SebOH

最佳答案

您的问题在于您的didStartElement 方法。当您检测到 item 时,您需要将 summary 初始化为一个空的 NSString @""- 否则它将为 nil,并且您将继续调用 appendString nil 导致 nil 值.

应该是

- (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];
summary = [[NSMutableString alloc] init];

}
}

关于ios - 解析 RSS Feed 的摘要导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23706038/

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