проблема с массивом float [] в цели c - PullRequest
0 голосов
/ 22 сентября 2011

Я кодирую в xcode по цели c.У меня возникла проблема.Я хочу попробовать как

declare float[] weights; 

результаты выглядят так

weight[0] = 0.5
weight[1] = 0.4
weight[2] = 0.9

А *

NSMutableArray *weight;

Am

weights = [NSMutableArray array];

for(int i=0; i < 4; i++) {
    float randomNumber = arc4random() % 11;
    [weights addObject:[[NSNumber alloc] initWithFloat:randomNumber]];
    NSLog(@" for loops color prob weghts=%f",[weights objectAtIndex:i] );

}

Не знаюне знаю, что не так с этим кодом.Пожалуйста, помогите мне узнать?

Когда я распечатываю это через NSLOG "все [вес = 0,000], а также как я могу получить доступ, например, [вес floatvalue].

во-вторых, когда я создаюкласс к другому классу есть вес [0], [1], [2], [3] и нет значений

Ответы [ 2 ]

3 голосов
/ 22 сентября 2011

Должно быть [[weights objectAtIndex:i] floatValue] при печати в NSLog

1 голос
/ 22 сентября 2011

NSNumber - это класс, а не целочисленный тип.

Следовательно, вы должны использовать% @, а не% f.

NSLog(@" for loops color prob weghts=%@",[weights objectAtIndex:i] );

В качестве альтернативы, используйте floatValue, как вы сказали. Вам может понадобиться сначала привести объект в NSNumber (для безопасности типов)

NSNumber *number = (NSNumber *)[weights objectAtIndex:i];
NSLog(@" for loops color prob weghts=%f", [number floatValue]);

Кроме того, здесь вы пропускаете объекты, потому что вы не освободили их после помещения их в массив. Либо отпустите после помещения их в массив, либо используйте [NSNumber numberWithFloat:]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...