【发布时间】:2012-08-03 17:04:23
【问题描述】:
我在解析 XML 提要时遇到问题。每个父节点大约有 15 个子节点。目前我正在使用 stringbytrimmingchartersinset 解析所有节点:然后是 NSCharacterset whitespaceandnewline 字符集。 像这样:
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
currentElementValue = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
这适用于除一个节点之外的所有节点。对于这个节点,我希望文本按原样通过。我尝试设置一个 if 语句来区别对待这个特定节点,所以我更新了以下内容。
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if ([testingString isEqualToString:@"AdoptionSummary"]) {
[currentElementValue appendString:string]; //This keeps breaking
}
else {
currentElementValue = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
但是我遇到了一个错误。
*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“尝试使用 appendString 改变不可变对象:”
仅当我使用 stringbytrimmingchartersinset 和 appendString 的组合时才会发生错误。但是,如果我在其中使用 stringbytrimmingchartersinset 或 appendString ,它会毫无错误地解析。 currentElementValue 是一个 NSMutableString 那么为什么会抛出这个错误呢?
我尝试查看此NSMutableString appendString generates SIGABRT Error 和此error : 'Attempt to mutate immutable object with appendString:' --,但无济于事。
我只希望“AdoptionSummary”附加“原样”而其他 14 个被修剪。我做错了什么?有什么建议吗?
谢谢!
【问题讨论】:
标签: ios5 nsstring nsxmlparser nsmutablestring