nsstring показывает другой результат при регистрации и назначении - PullRequest
0 голосов
/ 28 июля 2010

У меня есть следующий код:

- (void) loadVersionDataToTable: (int) versionIndex {

OptimizationReportDate* datedVersions = [self.optimizationReport.datedResults objectAtIndex:0];
ReportDateVersion* version = [datedVersions.versions objectAtIndex:versionIndex];
ReportDateVersionSegment *seg = [version.versionSegments objectAtIndex:0];

NSString* command = (@"loadRevenueTable( %@ , %@ , %@ , %@ , %@ , %@ , %@ , %@ )",
                               (@"%@",[seg.values objectForKey:@"PageRequest"]),
                               (@"%@",[seg.values objectForKey:@"PageDisplay"]),
                               (@"%@",[seg.values objectForKey:@"Completions"]),
                               (@"%@",[seg.values objectForKey:@"CR"]),
                               (@"%@",[seg.values objectForKey:@"VistisGeneratingRevenue"]),
                               (@"%@",[seg.values objectForKey:@"RPV"]),
                               (@"%@",[seg.values objectForKey:@"AOV"]),
                               (@"%@",[seg.values objectForKey:@"TotalRevenue"]));

NSLog(@"loadRevenueTable( %@ , %@ , %@ , %@ , %@ , %@ , %@ , %@ )",
      (@"%@",[seg.values objectForKey:@"PageRequest"]),
      (@"%@",[seg.values objectForKey:@"PageDisplay"]),
      (@"%@",[seg.values objectForKey:@"Completions"]),
      (@"%@",[seg.values objectForKey:@"CR"]),
      (@"%@",[seg.values objectForKey:@"VistisGeneratingRevenue"]),
      (@"%@",[seg.values objectForKey:@"RPV"]),
      (@"%@",[seg.values objectForKey:@"AOV"]),
      (@"%@",[seg.values objectForKey:@"TotalRevenue"]));

[webView stringByEvaluatingJavaScriptFromString:command];

}

команда nslog выводит желаемыйвывод вызова функции с правильными свойствами, в то время как свойству команды назначаются последние значения из полученных от nsdictionary (свойство values ​​является обязательным), это сводит меня с ума ??кто-нибудь ?Порядок команды log и nsstring * также не имеет значения.

Ответы [ 3 ]

0 голосов
/ 28 июля 2010

Это неправильно:

NSString* command = (@"loadRevenueTable( %@ , %@ , %@ , %@ , %@ , %@ , %@ , %@ )",
                           (@"%@",[seg.values objectForKey:@"PageRequest"]),
                           (@"%@",[seg.values objectForKey:@"PageDisplay"]),
                           (@"%@",[seg.values objectForKey:@"Completions"]),
                           (@"%@",[seg.values objectForKey:@"CR"]),
                           (@"%@",[seg.values objectForKey:@"VistisGeneratingRevenue"]),
                           (@"%@",[seg.values objectForKey:@"RPV"]),
                           (@"%@",[seg.values objectForKey:@"AOV"]),
                           (@"%@",[seg.values objectForKey:@"TotalRevenue"]));

Это не делает то, что вы хотите. Используйте это вместо:

NSString* command = [NSString stringWithFormat:@"loadRevenueTable( %@ , %@ , %@ , %@ , %@ , %@ , %@ , %@ )",
                           (@"%@",[seg.values objectForKey:@"PageRequest"]),
                           (@"%@",[seg.values objectForKey:@"PageDisplay"]),
                           (@"%@",[seg.values objectForKey:@"Completions"]),
                           (@"%@",[seg.values objectForKey:@"CR"]),
                           (@"%@",[seg.values objectForKey:@"VistisGeneratingRevenue"]),
                           (@"%@",[seg.values objectForKey:@"RPV"]),
                           (@"%@",[seg.values objectForKey:@"AOV"]),
                           (@"%@",[seg.values objectForKey:@"TotalRevenue"])];
0 голосов
/ 28 июля 2010

Вы делаете действительно странные вещи здесь! Вероятно, с другого языка. (a,b) технически С, но я не понимаю, зачем ты это делаешь.

(a,b) оценивает что-то вроде: оцените a, затем оцените b и используйте результат b.

так

(@"%@",[seg.values objectForKey:@"PageRequest"])

на самом деле означает

[seg.values objectForKey:@"PageRequest"]

на практике. Или я упускаю какую-то новую языковую функцию.

Что касается вашего назначения на command, вы также берете последний элемент списка (a,b,c,..). Используйте

[NSString stringWithFormat:@"%@,%@,%@",a,b,c]

вместо.

0 голосов
/ 28 июля 2010

Я на самом деле удивлен, что не дал вам хотя бы предупреждение. Похоже, что вы присваиваете command целой связке строк, так что последняя - это та, которая придерживается. Я думаю, что вы хотите это.

OptimizationReportDate* datedVersions = [self.optimizationReport.datedResults objectAtIndex:0];
ReportDateVersion* version = [datedVersions.versions objectAtIndex:versionIndex];
ReportDateVersionSegment *seg = [version.versionSegments objectAtIndex:0];

NSString* command = [NSString stringWithFormat:@"loadRevenueTable( %@ , %@ , %@ , %@ , %@ , %@ , %@ , %@ )",
                     [seg.values objectForKey:@"PageRequest"],
                     [seg.values objectForKey:@"PageDisplay"],
                     [seg.values objectForKey:@"Completions"],
                     [seg.values objectForKey:@"CR"],
                     [seg.values objectForKey:@"VistisGeneratingRevenue"],
                     [seg.values objectForKey:@"RPV"],
                     [seg.values objectForKey:@"AOV"],
                     [seg.values objectForKey:@"TotalRevenue"]];

NSLog(@"loadRevenueTable( %@ , %@ , %@ , %@ , %@ , %@ , %@ , %@ )",
      [seg.values objectForKey:@"PageRequest"],
      [seg.values objectForKey:@"PageDisplay"],
      [seg.values objectForKey:@"Completions"],
      [seg.values objectForKey:@"CR"],
      [seg.values objectForKey:@"VistisGeneratingRevenue"],
      [seg.values objectForKey:@"RPV"],
      [seg.values objectForKey:@"AOV"],
      [seg.values objectForKey:@"TotalRevenue"]);

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