数组中的随机NSNumber

时间:2011-09-26 14:12:46

标签: objective-c cocoa

我正试图从NSMutableArray(10.00,2.56,4.25,1.95)中选择一个IBAction随机浮点数。

这是我试过的:

在viewDidLoad中:

NSMutableArray *numberPicker = [NSArray arrayWithObjects:
                                  [NSNumber numberWithFloat:10.00],
                                  [NSNumber numberWithFloat:2.56],
                                  [NSNumber numberWithFloat:4.25],
                                  [NSNumber numberWithFloat:1.95],
                                  nil];

在IBAction中:

-(IBAction)buttonPressed: (id)sender{
result = [numberPicker objectAtIndex:arc4random() % [numberPicker count])];

显然这不起作用,我收到错误“从不兼容的类型'id'分配给'浮动'”。 任何想法如何将其中一个数字变成“结果”?

2 个答案:

答案 0 :(得分:3)

您只需将一行更改为:

result = [[numberPicker objectAtIndex:arc4random() % [numberPicker count])] floatValue];

答案 1 :(得分:0)

您可以在NSArray上的类别中编写方法randomElement

#import "NSArray+RandomUtils.h"

@implementation NSArray (RandomUtils)


-(id)randomElement
{
    if ([self count] < 1) return nil;
    NSUInteger randomIndex = arc4random() % [self count];
    return [self objectAtIndex:randomIndex];
}
@end

或只使用一个,I wrote.

你会像这样使用它:

  • #import "NSArray+RandomUtils.h"

  • 使用属性numberPicker @property (retain) NSArray *numberPicker

  • viewDidLoad:

    self.numberPicker = [NSArray arrayWithObjects:
                              [NSNumber numberWithFloat:10.00],
                              [NSNumber numberWithFloat:2.56],
                              [NSNumber numberWithFloat:4.25],
                              [NSNumber numberWithFloat:1.95],
                              nil];
    
  • {li>

    buttonPressed:使用

    result = [(NSNumber *)[self.numberPicker randomElement] floatValue];