gpt4 book ai didi

ios - '尝试用 appendString :' error when parsing xml 改变不可变对象(immutable对象)

转载 作者:行者123 更新时间:2023-11-28 21:51:44 27 4
gpt4 key购买 nike

我正在使用 NSXMLParser 解析 Objective-C 中的 rss 提要。此 rss 与此类似:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
<channel>
<title>My RSS</title>
<description>My Rss parser</description>

<item>

<title>Some kind of a title</title>
<description>
<![CDATA[]]>
</description>
<media:thumbnail url="http://www.example.org/pics/Thumbs/picture.jpg"/>
<pubDate>Tue, 20 Jan 2015 22:24:56 -0500</pubDate>
</item>
</channel>
</rss>

我的 NSXML 代表是这样的:

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

}

if([element isEqualToString:@"media"]){
imageLink = [[NSMutableString alloc] init];
imageLink = [attributeDict objectForKey:@"url"];
}

NSLog (@"Parse did Start");
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {

if ([element isEqualToString:@"title"]) {
[title appendString:string];
} else if ([element isEqualToString:@"media"]) {
imageLink = string;
} else if ([element isEqualToString:@"pubDate"]) {
[pubDate appendString:string];
}
NSLog(@"Found characters");
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {

if ([elementName isEqualToString:@"item"]) {

[item setObject:title forKey:@"title"];
[item setObject:imageLink forKey:@"media"];
[item setObject:pubDate forKey:@"pubDate"];

[feeds addObject:[item copy]];

}

NSLog(@"Did end elements");

}

- (void)parserDidEndDocument:(NSXMLParser *)parser {

[self.tableView reloadData];
NSLog(@"Parsing is done");
NSLog(@"%@", title);

}

我已经声明了所有需要的变量。正如您可能已经看到的,我正在尝试解析以 rss 元素的属性形式呈现的链接。在我这样做之前,应用程序运行良好,但图像 imageLink = [attributeDict objectForKey:@"url"]; "Attempt to mutate immutable object with appendString:"bug 出现了。

大家怎么看?

最佳答案

因为你已经使用了 NSMutableString 你应该替换下面的代码

if([element isEqualToString:@"media"]){
imageLink = [[NSMutableString alloc] init];
imageLink = [attributeDict objectForKey:@"url"];
}

 if([element isEqualToString:@"media"]){
imageLink = [[NSMutableString alloc] init];
[imageLink appendString:[attributeDict objectForKey:@"url"]];
}

关于ios - '尝试用 appendString :' error when parsing xml 改变不可变对象(immutable对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28077786/

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