我有一个应用程序,解析我添加到我的应用程序包中的XML,它用字符串包含子节点,有时它足够长,所以我不能把它作为完整输出(我只得到“最后”部分的字符串)。这是我试图解决问题的方法:
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if (isDescription) [self._currentPosition setValue:string forKey:@"description"];
if (isDescription) {
if (self._currentPosition[@"description"])
{
NSMutableString *str = self._currentPosition[@"description"];
[str appendString:self.descriptionString];
}
else
{
[self._currentPosition setValue:[NSMutableString stringWithString:self.descriptionString] forKey:@"description"];
}
};
}
self.description字符串是我在.h文件中声明的字符串,以使其可变,但仍然,我收到错误SIGABRT - Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to mutate immutable object with appendString:'
还有其他方法可以解决这个问题吗?我在其他应用程序中遇到了同样的问题,但之前的代码修复得很好,但现在我解析了一个XML我添加到应用程序包,在另一个案例中只是一个Web源。
所以我的问题是 - 如何使“完整”字符串完全输出?
有一些可能有用的信息 - 我的字符串的控制台输出:
2014-02-16 16:01:51.500 superApp[294:60b] Ло́бное ме́сто — памятник древнерусской архитектуры, находящийся в Москве, на Красной площади. Представляет собой возвышение, окружённое каменной оградой.
2014-02-16 16:01:51.527 superApp[294:60b] лощади.
仅在文本输出中获取 - “лощади。”
任何建议都将不胜感激,谢谢!
答案 0 :(得分:1)
这一行
NSMutableString *str = self._currentPosition[@"description"];
应该是
NSMutableString *str = [NSMutableString stringWithString:self._currentPosition[@"description"]];
答案 1 :(得分:1)
可能self._currentPosition [@“description”]是NSString,而不是NSMutableString。 你应该改变这个
NSMutableString *str = self._currentPosition[@"description"];
到这个
NSMutableString *str = [[self._currentPosition[@"description"] mutableCopy];