2014-01-20 3 views
0

У меня еще одна проблема с новичком. У меня есть файл CSV, который выглядит примерно так:Создать массив поплавков из csv Objective C

3.4,2.4,6.30,2.2,53.42,54,1,5 

Теперь у меня есть код, который может анализировать это в массив

NSError *error; 
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"csv_file" ofType:@"csv" inDirectory:nil]; 
NSString *string = [NSString stringWithContentsOfFile:filepath encoding:NSUTF8StringEncoding error:&error]; 
NSArray *array = [array componentsSeparatedByString:@","]; 

Проблема у меня есть, что я не могу сделать математику с этими числами (потому что они char, или, может быть, строка, не уверены -).

Мой вопрос: есть ли способ, как я, но создать массив с поплавками, или есть способ сделать строки (или символы) в array в поплавки.

Спасибо, и, конечно, если мой вопрос не ясен, просто дайте мне знать.

+0

FYI, массив содержит экземпляры 'NSString'. – Wain

ответ

0

Пусть элементы в массиве остаются экземплярами NSString (это то, что они есть). Просто, когда вы получаете доступ к элементу из массива делают его поплавок так:

float f = [array[index] floatValue]; 

Вы не можете иметь NSArray поплавков в Objective-C, так как NSArray может содержать только объекты.

+0

Хорошо, спасибо, я сделаю это – uti0mnia

0

Вы можете искать для floatValue собственности

float sum = 0; 
for (NSString *numberString in array) { 
    sum += [numberString floatValue]; 
} 

Если вы хотите, чтобы поместить их в массив C:

float floatArray[array.count]; 
for(i = 0; i < sizeof(floatArray); i++) { 
    NSString *numberString = array[i]; 
    floatArray[i] = [numberString floatValue]; 
} 

Обратите внимание, что этот способ создания массива переменного тока добавит его к стек; вам нужно будет использовать malloc, если вы хотите добавить его в кучу.

Смежные вопросы