我看了看这里,并没有看到我同样的情况。任何愿意帮忙的人,谢谢。
我有一个分组表,显示我的足球队在即将到来的赛季的比赛。主场和客场比赛。
NSString *message = [[NSString alloc] initWithFormat:rowValue];
Error Message: Format not a string literal and no format arguments甚至不确定这是从哪里来的?
我使用了我在网上找到的教程。复制并粘贴了整个过程。我只更改了我的个人表所需的值。这是我得到的唯一错误吗?有什么帮助吗??
编辑:如果我需要提供更多的代码或任何东西,请让我知道!
谢谢你!!
--安东尼·隆巴迪
发布于 2011-08-20 06:16:07
不太明白你的意思。我将输入更大的代码块,这可能会有所帮助。
- (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];
}发布于 2013-08-20 09:52:47
有点老生常谈的问题,而最初的提问者很可能早就走了.但对于历史和未来的读者来说,这是正在发生的事情。
问题是因为您正在创建具有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];https://stackoverflow.com/questions/7127349
复制相似问题