我只获得字符串解析XML的第二部分

时间:2014-02-16 12:03:23

标签: ios objective-c xml

我有一个应用程序,解析我添加到我的应用程序包中的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] лощади.

仅在文本输出中获取 - “лощади。”

任何建议都将不胜感激,谢谢!

2 个答案:

答案 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];