我在这里看了看并没有看到同样的情况。任何愿意帮助的人,谢谢。
我有一个Grouped Table,显示我即将到来的赛季的足球队比赛。主场比赛和客场比赛。
NSString *message = [[NSString alloc] initWithFormat:rowValue];
Error Message: Format not a string literal and no format arguments
甚至不确定这是什么来源?
我使用了我在网上找到的教程。复制并粘贴整件事。我只更改了我个人桌子所需的值。这是我得到的唯一错误?任何帮助?
编辑:如果我需要提供更多代码或任何内容,请告诉我们!
谢谢!
- Anthony Lombardi
答案 0 :(得分:0)
不太清楚你的意思。我会输入更大的代码块,这可能有所帮助。
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSArray *listData =[self.tableContents objectForKey:
[self.sortedKeys objectAtIndex:[indexPath section]]];
NSUInteger row = [indexPath row];
NSString *rowValue = [listData objectAtIndex:row];
NSString *message = [[NSString alloc] initWithFormat:rowValue];
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"You Better Be There Or Be Watching It!"
message:message delegate:nil
cancelButtonTitle:@"Go Knights!"
otherButtonTitles:nil];
[alert show];
[alert release];
[message release];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
答案 1 :(得分:0)
有些陈旧的问题,原来的提问者很可能已经过去......但对于历史和未来的读者来说 - 这就是正在发生的事情。
问题是因为您使用printf样式格式字符串创建message
- initWithFormat
期望有一个格式字符串,其中%字符表示替换 - 例如浮点数的%f,整数的%d等...
您传入的是动态字符串,而不是静态格式字符串(直接在代码中定义的字符串文字)。编译器很困惑,因为你没有传递任何参数。如果你的动态字符串包含%替换,那么地狱之门就会破裂,或者最好是你的应用程序崩溃。
由于没有参数的格式字符串没有意义,因此会引发错误。
要解决此问题,您可以将rowValue
和message
行替换为:
NSString *rowValue = [listData objectAtIndex:row];
NSString *message = rowValue;
或者更简洁:
NSString *message = [listData objectAtIndex:row];
或者使用新的objective-c文字语法和下标:
NSString *message = listData[row];