我有以下代码:
- (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属性是nsdictionary)这让我疯狂?? 任何人 ? log和nsstring *命令的顺序也无关紧要。
答案 0 :(得分:0)
我真的很惊讶,至少没有给你一个警告。看起来你正在为一大堆字符串分配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];
答案 1 :(得分: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"]));
那不是你想做的事。请改用:
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"])];
答案 2 :(得分:0)
你在这里做真的奇怪的东西!可能来自另一种语言。 (a,b)
在技术上是C,但我不明白为什么你会这样做。
(a,b)
评估为:评估a
,然后评估b
,并使用b
的结果。
所以
(@"%@",[seg.values objectForKey:@"PageRequest"])
实际上意味着
[seg.values objectForKey:@"PageRequest"]
在实践中。或者我错过了一些新的语言功能。
至于您对command
的作业,您也会获取(a,b,c,..)
列表的最后一个元素。使用
[NSString stringWithFormat:@"%@,%@,%@",a,b,c]
代替。