Objective-C stringWithFormat错过了一个参数?

时间:2010-06-09 01:19:37

标签: objective-c string format

当我运行此代码时:

- (NSString *)description{
    return [NSString stringWithFormat:@"(FROG idle:%i animating:%i rect:%@ position:%@ tongue:%@)", 
                                    self.idleTime, 
                                    self.animating, 
                                    NSStringFromCGRect(self.rect), 
                                    NSStringFromCGPoint(self.position),
                                    tongue
            ];
}

我得到以下输出:

(FROG idle:0 animating:0 rect:(null) position:{{1,2}{3,4}} tongue:{5,6})

这是错误的,因为它似乎正在跳过rect格式字符串并将所有内容放置一个。所以空闲和动画是我所期望的,然后跳过rect,但NSStringFromCGRect(self.rect)的结果被放置到位,然后位置的结果被推到舌头,然后舌头根本不显示。

我很茫然。

2 个答案:

答案 0 :(得分:1)

如果没有idleTime和动画的声明,我无法分辨,但其中一个或两个可能是%i说明符的错误类型。也许idleTime是双倍的(NSTimeInterval)?

根据实际类型的不同,您可以将它们转换为int:

                                (int)self.idleTime, 
                                (int)self.animating, 

答案 1 :(得分:1)

self.rect不能是有效的CGRect。你确定你不是指self.frame吗?