【问题标题】:Objective-C stringWithFormat misses an argument?Objective-C stringWithFormat 遗漏了一个参数?
【发布时间】:2010-06-09 01:19:37
【问题描述】:

当我运行这段代码时:

- (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 格式字符串并将所有内容都替换为 1。所以空闲和动画是我所期望的,然后 rect 被跳过,但是 NSStringFromCGRect(self.rect) 的结果被放置到位置,然后位置的结果被推到舌头,然后根本不显示舌头。

我很茫然。

【问题讨论】:

    标签: objective-c string format


    【解决方案1】:

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

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

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

    【讨论】:

    • 这就是答案。我将 nstimeinterval 格式字符串从 %i 更改为 %a,因为它是一个双精度值。全部固定!谢谢!我想我可能只是有点累了
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多