2014-03-20 2 views
1

Простой вопрос, я думаю ...Суммируя значения из строки (componentsJoinedByString)

Как сложить значения в следующей строке? scoreValue = "8.68,2.815,5,7.975,2.695,7.285,3.625,7.36,8.335,2.485";

Немного информации об источнике. Строка возвращается из объекта CoreData (так называемый «ScoreData»), и поместить в экземпляр NSDictionary, как это:

NSDictionary *getScoreValues = [self.scoreEntityResultsForValues objectAtIndex:[indexPath row]]; 
NSLog(@"getScoreValues returns: %@", getScoreValues); // This is what getScoreValues returns for each of the scoreValue's in the CoreData entity. 

Это как-значения, размещенные в сущности, первоначально

//Call the ScoreData entity 
ScoreData *newEntry = [NSEntityDescription insertNewObjectForEntityForName:@"ScoreData" inManagedObjectContext:self.managedObjectContext]; 

//Join the value returned from the NSArray by a "," and post them as a string to the ScoreData entity 
NSString *stringForScoreEntity = [[CEWStoreVars sharedScoreArray].sharedScoreArrayProperty componentsJoinedByString:@","]; 
newEntry.scoreValue = stringForScoreEntity; 

Причина, по которой я отправляю значения в виде строки для сущности, заключается в том, что я не мог заставить сущность принять значение float, и я хочу, чтобы потом вытащить каждый отдельный результат. Но я открыт для предложений, если есть лучший способ сделать это. Кроме того, дайте мне знать, если вам нужно больше кода, чтобы расшифровать то, что происходит!

Заранее благодарен!

EDIT

Для тех, кто заинтересован, это то, как код должен выглядеть:

//Load the Key and KeyValue into Dictionary 
NSDictionary *getScoreValues = [self.scoreEntityResultsForValues objectAtIndex:[indexPath row]]; 

//Convert the dictionary keyValue to a string 
NSString *convertDictKeyToString = [getScoreValues objectForKey:@"scoreValue"]; 

//Remove the "," in the string. 
NSArray *items = [convertDictKeyToString componentsSeparatedByString:@","]; 

//Add them up to get the sum 
double total = 0.0; 
for (NSString *string in items) 
{ 
    total += [string floatValue]; 
} 

ответ

2
NSArray *items = [scoreValue componentsSeparatedByString:@","]; //scoreValue is a string 

double total = 0.0; 
for (NSString *string in items) 
{ 
    total += [string floatValue]; 
} 
+0

, что не кажется, работает. Это дает мне ошибку: «Нет видимого интерфейса для NSDictionary объявляет селекторные компонентыSeperatedByString» – Chris

+0

scoreValue должен быть NSString без NSDictionary! Из вашего вопроса: «Как я могу добавить значения в следующую строку?» –

+1

Beautiful, it работает! – Chris

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