Objective-C NSInteger格式混淆

时间:2011-08-19 14:41:40

标签: iphone objective-c ios

我知道我错过了一些明显的东西,但我似乎无法让我的nsinteger东西写入传递变量并将它们放入字符串中。这是代码的一部分。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *chosenCell = [tableView cellForRowAtIndexPath:indexPath];
    //need to get the ID number for this guy
    NSInteger id_number = chosenCell.tag;
    NSLog(@"This is the id number I'm sending to the item list %@", id_number);
    NSLog(@"This is the id number I'm sending to the item list %i", id_number);
    ItemViewController *vc = [[ItemViewController alloc] initWithPlayer:id_number andGame:gameId];
    [[self navigationController] pushViewController:vc animated:YES];
    [vc release];
}

问题是,如果我使用%@打印它可以正常工作,但实际上它不应该,因为这不是一个正在打印的对象而是一个整数。如果我使用整数调用,它的功能错误,给我一个真正的离线整数。这听起来像答案只是“使用%@”,但问题是,在其他情况下,当我尝试将其用作解决方案时(例如在下一个控制器上),我得到一个exc_bad_access。请告诉我,我在这里遗漏了一些明显的东西......

2 个答案:

答案 0 :(得分:1)

根据{{​​3}},

%i将有效。

Apple's Documentation,这是%i指定的内容。

答案 1 :(得分:1)

要同时使用32位和64位系统,您应该正确使用此处Apple文档中指定的%ld%lx(在标准平台依赖项下): http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

编辑:啊。抱歉。这是iOS而不是Mac OS。