我想这很简单,但我找不到解决这个问题的方法......
@property (strong, nonatomic) NSMutableArray *randomQuestionNumberArray;
我有一个像这样开始的方法
- (int)showQuestionMethod:(int)number;
在这个方法中,我有一个循环,我用NSMutableArray
填充数字,然后将其洗牌。
//Creating random questions array
_randomQuestionNumberArray = [[NSMutableArray alloc] init];
for (int i = 0; i < numberOfQuestions; i++) {
[_randomQuestionNumberArray addObject:[NSNumber numberWithInt:i]];
}
//Shuffling the array
NSUInteger count = [_randomQuestionNumberArray count];
for (NSUInteger i = 0; i < count; ++i) {
// Select a random element between i and end of array to swap with.
int nElements = count - i;
int n = (arc4random() % nElements) + i;
[_randomQuestionNumberArray exchangeObjectAtIndex:i withObjectAtIndex:n];
}
这很有效。让我们说它将数字改组为4,5,1,3,6,0,2。
现在在viewDidLoad中,我尝试使用showQuestionMethod
的第一个值调用方法_randomQuestionNumberArray
,在这种情况下应为4。
[self showQuestionMethod:[_randomQuestionNumberArray[0] intValue]];
问题是该方法在值为4时始终传递值0,但NSLog(@"first value is %@", _randomQuestionNumberArray[0])
返回正确值4。
如何解决此问题并将id类型转换为int?
答案 0 :(得分:1)
你可以试试这个:
[self showQuestionMethod:[(NSNumber)_randomQuestionNumberArray[0] intValue]];
答案 1 :(得分:0)
你确定,传递了错误的值吗?也许你的showQuestionMethod中的NSLog语句有问题。
我已经尝试过这段代码并且工作正常:
- (IBAction)start:(id)sender {
NSMutableArray *_randomQuestionNumberArray;
int numberOfQuestions=5;
_randomQuestionNumberArray = [[NSMutableArray alloc] init];
for (int i = 0; i < numberOfQuestions; i++) {
[_randomQuestionNumberArray addObject:[NSNumber numberWithInt:i]];
}
//shuffling the array
NSUInteger count = [_randomQuestionNumberArray count];
for (NSUInteger i = 0; i < count; ++i) {
// Select a random element between i and end of array to swap with.
int nElements = count - i;
int n = (arc4random() % nElements) + i;
[_randomQuestionNumberArray exchangeObjectAtIndex:i withObjectAtIndex:n];
}
NSLog(@"first value is %@", _randomQuestionNumberArray[0]);
[self showQuestionMethod:[_randomQuestionNumberArray[0] intValue]];
}
- (void)showQuestionMethod:(int)number {
NSLog(@"number is %d", number);
}