objective-c - IOS - NSMutableString : appending, 和初始化属性

标签 objective-c ios nsxmlparser nsmutablestring

我显然没有得到任何东西。

我正在解析一个 XML 文档,所以我有一个 NSMutableString 可以附加到其中一个元素,因为 foundCharacters 被截断并分成几部分。我可以让这一切正常工作,但我不明白为什么以某种方式做它不起作用。

@property (copy, nonatomic) NSMutableString *currentFoundCharacter;

这就是我为 ViewController 声明属性的方式。

然后我有:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
  {
    if (!currentFoundCharacter) {
      currentFoundCharacter = [[NSMutableString alloc] init]; // Have to do this or new strings never append to it.
    }
    if ([currentAttribute compare:@"description"] == NSOrderedSame && currentAttribute.length > 1) {
    [currentFoundCharacter appendString:[string copy]];
  }

现在这就在这里工作。它将在一个元素中组合我想要的所有内容。但是如果我尝试使用合成方法,我会得到关于改变不可变对象(immutable对象)的错误,所以基本上用 self.currentFoundCharacters 替换所有 currentFoundCharacters。

也许我误解了何时以及为何使用属性与实例变量,但在 init 方法之外,因此我的印象是使用 setter/getter 更好。最后,我只想确保编写可维护的代码。

最佳答案

在您的属性(property)中使用保留而不是复制。复制给你一个不可变的副本。

关于objective-c - IOS - NSMutableString : appending, 和初始化属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10263416/

相关文章:

objective-c - 使用为 ARC 配置的 XMLRPC 库,收到 ARC 错误

iOS 12 DatePicker 值更改问题

javascript - 使用 jquery 或 javascript 读取 xml

ios - 如何使用将发布到 URL 的特殊字符对字符串进行编码? objective-C

ios - AFNetworking 2.0 和下载多张图片

objective-c - NSPredicate 键路径在右侧

ios - 从纵向旋转到横向时,从 UISplitViewController 的主面板呈现的 View 不旋转 (iPad)

iphone - UIWebview xml 文件

ios - iOS8 上的 NSXMLParser - NSXMLParser 不支持可重入解析

ios - Xcode 5 Storyboard - presentViewController 不呈现我现有的 Viewcontroller 并显示黑屏