【发布时间】:2015-04-12 03:59:38
【问题描述】:
我在 for 循环中迭代一个 NSCountedSet,然后尝试创建一个由它持有的 NSString 对象以及该特定对象的计数组成的 NSMutableString,然后将新创建的 NSMutableString 插入NSMutableArray。但是,当我这样做时,我收到以下错误:
Attempt to mutate immutable object with appendFormat
这是我正在使用的代码:
for (NSMutableString *myString in myCountedSet) {
[myString appendFormat:@"-%lu", (unsigned long)[myCountedSet countForObject:myString]];
[myArray addObject:myString];
}
我只是尝试为 NSCountedSet 中的每个对象构造一个形式为 myString-count 的字符串,然后将此字符串插入到数组中。谁能看到我做错了什么?
【问题讨论】:
-
字符串实际上是可变的吗?你是如何创建它们的?
-
NSCountedSet 已经包含 NSString 对象。
-
如果你在循环的第一行设置断点,然后在 lldb 窗口中输入:
po [myString class],你会看到什么? -
我明白了。它包含 NSStrings 而不是 NSMutableStrings。这就是为什么我问你是如何创建它们的
-
正确。如果它们包含 NSString 对象,我应该做一些不同的事情吗?
标签: ios objective-c nsmutablestring nscountedset