"格式字符串不是字符串文字(可能不安全)"

时间:2014-08-23 02:23:36

标签: ios objective-c iphone

我正在创建一个显示消息,用户和时间戳的学校应用。我试着在线寻找修复,但我找不到任何我能理解的东西。我是编程新手,任何事情都可以提供帮助。我读过某个地方,NSLog可以提供帮助,但我不知道它是如何使用的。请帮忙!

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"messagesCell";
    MessageTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    reversedMessages = [[messagesArray reverseObjectEnumerator] allObjects];

    PFObject *tempObject = [reversedMessages objectAtIndex:indexPath.row];

    cell.cellTitle.text = [tempObject objectForKey:@"content"];
    cell.userName.text = [tempObject objectForKey:@"user"];

    NSDate *createdAt = [tempObject createdAt];
    NSDateFormatter *dateDisplay = [[NSDateFormatter alloc] init];
    [dateDisplay setDateFormat:@"MMM, d h:mm a"];

    **cell.timeStamp.text = [NSString stringWithFormat: [dateDisplay stringFromDate:createdAt]];**

    return cell;
}

1 个答案:

答案 0 :(得分:1)

如果你正在使用stringWithFormat,它期望一个带有%@的格式字符串被逗号分隔的参数替换,如下所示:

[NSString stringWithFormat:@“这是param1:%@,和param2:%@”,param1,param2];

如果你使用普通的NSString,你只想这样做:

cell.timeStamp.text = [dateDisplay stringFromDate:createdAt];

我希望 双重强调 的替代方案只是与上面更好的方式形成鲜明对比,在这种情况下 无意义 ,将是:

cell.timeStamp.text = [NSString stringWithFormat:@"%@", [dateDisplay stringFromDate:createdAt]];