将一个值与随机生成的另一个值相关联
Associating a value with another value generated randomly
这是我想要做的事情:
我有一系列为用户随机生成的调查问题。
我想要的是将两个值相互关联,一个是随机生成的问题编号的整数值,另一个是代表这个用户回答了这个问题多少次的整数值。我希望以后能够保存和检索这些关联值,这样我就可以增加用户回答这个问题的次数。
那么,如何将两个不同的整数值相互关联、保存并在以后更新它们?
我从这段代码开始。
QuestionSelected = arc4random_uniform(4);
例如,一旦生成此结果:
已选择问题 = 1
我需要建立一个可以与该问题的值 (1) 相关联的新值,递增它,然后每次用户 returns 对此问题进行保存。
感谢您的帮助!
一个值与另一个值的关联是 "map"。 NSDictionary
是 Cocoa 中的标准映射集合,因此您可以使用:
NSNumber * timesSeen = myMutableDictionary[@(selectedQuestion)];
if( !timesSeen ){
timesSeen = @(0);
}
myMutableDictionary[@(selectedQuestion)] = @([timesSeen intValue] + 1);
由于数组本质上将其索引(数字)与值相关联,因此另一种选择是使用 NSMutableArray
:
NSNumber * timesSeen = myMutableArray[selectedQuestion];
myMutableArray[selectedQuestion] = @([timesSeen intValue] + 1);
一个NSArray
不能是稀疏的,所以你在创建它时必须用零填充它:
for( NSUInteger i = 0; i < numQuestions; i++ ){
[myMutableArray addObject:@(0)];
}
您可能会注意到,处理 Cocoa 集合中需要更改的数值有点麻烦,因为 NSNumber
每次都必须拆箱并替换。所以第三个选项是 C 数组:
int * viewCounts;
viewCounts = calloc(numQuestions, sizeof(int));
viewCounts[selectedQuestion]++;
calloc()
为您获取一块内存并用零填充。完成数组后,您需要通过调用 free(viewCounts)
来释放该内存。
这是我想要做的事情:
我有一系列为用户随机生成的调查问题。
我想要的是将两个值相互关联,一个是随机生成的问题编号的整数值,另一个是代表这个用户回答了这个问题多少次的整数值。我希望以后能够保存和检索这些关联值,这样我就可以增加用户回答这个问题的次数。
那么,如何将两个不同的整数值相互关联、保存并在以后更新它们?
我从这段代码开始。
QuestionSelected = arc4random_uniform(4);
例如,一旦生成此结果:
已选择问题 = 1
我需要建立一个可以与该问题的值 (1) 相关联的新值,递增它,然后每次用户 returns 对此问题进行保存。
感谢您的帮助!
一个值与另一个值的关联是 "map"。 NSDictionary
是 Cocoa 中的标准映射集合,因此您可以使用:
NSNumber * timesSeen = myMutableDictionary[@(selectedQuestion)];
if( !timesSeen ){
timesSeen = @(0);
}
myMutableDictionary[@(selectedQuestion)] = @([timesSeen intValue] + 1);
由于数组本质上将其索引(数字)与值相关联,因此另一种选择是使用 NSMutableArray
:
NSNumber * timesSeen = myMutableArray[selectedQuestion];
myMutableArray[selectedQuestion] = @([timesSeen intValue] + 1);
一个NSArray
不能是稀疏的,所以你在创建它时必须用零填充它:
for( NSUInteger i = 0; i < numQuestions; i++ ){
[myMutableArray addObject:@(0)];
}
您可能会注意到,处理 Cocoa 集合中需要更改的数值有点麻烦,因为 NSNumber
每次都必须拆箱并替换。所以第三个选项是 C 数组:
int * viewCounts;
viewCounts = calloc(numQuestions, sizeof(int));
viewCounts[selectedQuestion]++;
calloc()
为您获取一块内存并用零填充。完成数组后,您需要通过调用 free(viewCounts)
来释放该内存。