我正在使用NSXMLParser来解析文档并在UITableView中显示内容。
我从XML中提取的每个元素都被添加到NSMutableArray中,然后使用来自cellForRowAtIndexPath方法的NSMutableArray填充UITableView的单元格。
(所以,我的界面看起来像这样:
@interface ncViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, NSXMLParserDelegate>
)
以下是我如何将每个元素添加到NSMutableArray中:
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"item"]){
[item setObject:currentTitle forKey:@"title"]; // item is an NSMutableDictionary
[item setObject:currentLink forKey:@"link"];
[item setObject:[self flattenHTML:currentSummary] forKey:@"summary"];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"];
NSDate *qdate = [dateFormat dateFromString:[currentDate stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]];
[item setObject:qdate forKey:@"date"];
[dateFormat release];
dateFormat = nil;
[stories addObject:[[item copy] autorelease]];
}
}
当我在模拟器中测试应用程序时,一切正常,但当我在设备(iPhone)上测试时,应用程序因以下“未捕获的异常”而崩溃:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'-[__NSCFDictionary setObject:forKey:]: attempt to insert nil value (key: date)'
为什么qdate为零?在设备而不是模拟器中运行应用程序时会发生什么变化?
有什么建议吗?我希望有人有一个想法,因为它有点紧急...
提前谢谢!
答案 0 :(得分:1)
如果设备的Region设置与日期字符串所在的语言不匹配,格式化程序将无法解析字符串。
如果字符串是英文的,您可以在格式化程序上设置区域设置,使其与字符串的语言匹配:
NSLocale *enUSPOSIXLocale =
[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
[dateFormat setLocale:enUSPOSIXLocale];
NSDate *qdate = [dateFormat dateFromString...