gpt4 book ai didi

objective-c - -[__NSArrayI replaceObjectAtIndex :withObject:]: unrecognized selector sent to instance

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:10 27 4
gpt4 key购买 nike

我有一个 Mutable NSArray 存储对象类型(ids - NSNumber、NSString),它将存储数字(1、2、3、4 等)、操作(+、-、/、* 等),和变量(x、y、z 等)。我将变量和相关值存储在 NSDictionary 中,键是 NSStrings,等于 x、y、z,NSNumber 值分别为 5、5、2。我想用存储在 NSDictionary 中的实际值替换 NSArray 中的变量。当我尝试替换对象时,我不断收到以下错误。请帮忙。

-[__NSArrayI replaceObjectAtIndex:withObject:]: 无法识别的选择器发送到实例

        NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:
[NSNumber numberWithDouble:5],@"x",
[NSNumber numberWithDouble:5],@"y",
[NSNumber numberWithDouble:2],@"z",
nil];

+ (double)runProgram:(id)program
usingVariableValues:(NSDictionary *)variableValues;
{
// introspection - ensure program is NSArray and variableValues is NSDictionary
if ([program isKindOfClass:[NSArray class]] && [variableValues isKindOfClass: [NSDictionary class]])
{
// array for program stack
NSMutableArray *stack = [program copy];

// Loop to replace variables with actual values in NSDictionary
for (NSUInteger i = 0; i < [stack count]; i++)
{
NSLog(@"object at index = %@", [stack objectAtIndex:i]);
if ([[stack objectAtIndex:i] isKindOfClass:[NSString class]] && [[stack objectAtIndex:i] isEqualToString: @"x"])
{
// replace variable with value in corresponding value in dictionary
NSNumber *numberKeyValue = [variableValues objectForKey:@"x"];
[stack replaceObjectAtIndex:i withObject:numberKeyValue];
}
}
return 0
}

最佳答案

NSArray 的copy 方法总是返回一个不可变数组,不管原始数组是可变的还是不可变的。如果你想要一个可变副本,你需要使用 mutableCopy。 (这是 Cocoa 的约定。NSString、NSDictionary 以及通常任何具有可变和不可变变体的类都将以相同的方式工作。)

关于objective-c - -[__NSArrayI replaceObjectAtIndex :withObject:]: unrecognized selector sent to instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11787802/

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