gpt4 book ai didi

objective-c - 为什么这个字符串是不可变的?

转载 作者:行者123 更新时间:2023-12-03 16:51:15 26 4
gpt4 key购买 nike

为什么代码给出错误 - Attempt to mutate immutable object withappendFormat: ?

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];

for (NSTextTestingResult *match in matches) {
<omitted>
NSMutableString *value;
value = (NSMutableString *)[response stringWithRange:range];
if ([dict objectForKey:@"traveler"])
[dict objectForKey:@"traveler"] appendFormat:@"%@", value]; // Errors here

[dict setObject:value forKey:key];
}

正在将值创建为 _NSCFString

最佳答案

因为 [response stringWithRange:range] 返回一个不可变的 NSString *,并且转换不会使其变得可变。

您想要value = [[response stringWithRange:range] mutableCopy];

请注意,如果您不使用 ARC,则需要记住释放 mutableCopy。尽管[response stringWithRange:range]的返回值是自动释放的,但mutableCopy却不是。

关于objective-c - 为什么这个字符串是不可变的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18167474/

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