gpt4 book ai didi

ios - 替换 NSMutableArray 中的对象

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:41:41 25 4
gpt4 key购买 nike

我尝试用字符串替换数组中的对象。我用

@property (strong, nonatomic) NSMutableArray *myArray;

NSString *oldString = [NSString stringWithFormat:@"oldObject"];
NSString *toReplace = [NSString stringWithFormat:@"newObject"];

NSUInteger index = [self.myArray indexOfObject:oldString];
[self.firstLanguageArray replaceObjectAtIndex:index withObject:toReplace];

但每次我尝试替换时,应用程序都会崩溃。

编辑:我记录了“索引”。我将成为一个整数,如 2147483647

最佳答案

可能是因为您对 indexOfObject 的调用返回了 NSNotFound

NSNotFound 是一个常量,告诉您 oldString 对象在您的 self.myArray 字典中找不到,因为这个常量有(NSUInteger)-1 的值(由于整数下溢,它等同于无符号值 2147483647),该值显然会使您的应用程序因“越界”而崩溃"异常。

解决方法是在使用前先测试index != NSNotFound是否存在。或者确保您的数组 self.myArray 实际上包含一个 NSString 类型的对象,其值为 "oldObject"

如果给定您的实际代码,您希望 oldObject 出现在您的 self.myArray 中,那么再想一想,或许可以记录 self 的内容。 myArray 查找它实际包含的内容,并检查此内容是否为字符串。
(如果您在记录 myArray 的内容时看到 "oldObject",那可能只是您的对象中的 description 字符串数组,因此该数组不包含字符串 "oldObject" 本身,而是一个描述为 "oldObject")

的对象

旁注:如果您不使用任何格式占位符(如 %d%@,则无需使用 stringWithFormat ETC)。在这种情况下,您应该直接使用字符串常量,如果该字符串是常量,则无需动态构建字符串:只需使用 NSString* oldString = @"oldObject"NSString* toReplace = @"newObject".

关于ios - 替换 NSMutableArray 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31232630/

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