【问题标题】:EXC_BAD_ACCESS when trying to build string by using %@ for an int尝试使用 %@ 构建字符串时的 EXC_BAD_ACCESS
【发布时间】:2011-10-12 00:18:36
【问题描述】:

为了在 Core Data 中使用,我尝试构建一个 NSPredicate 对象。 minLengthmaxLength 的类型为int

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"length >= %@ AND length <= %@",
                          minLength, maxLength];

程序在此处崩溃并显示EXC_BAD_ACCESS。如果我使用%d 而不是%@,情况并非如此:

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"length >= %d AND length <= %d",
                          minLength, maxLength];

我在这里错过了什么?

【问题讨论】:

    标签: objective-c exc-bad-access


    【解决方案1】:

    %@ 是对象的format specifierint 不是对象。有符号整数的格式说明符是%d%i

    【讨论】:

    • 如果出于某种原因需要将它们视为对象,可以查看 NSNumber。
    • 太棒了。这只是帮助我解决了几个小时以来一直存在的问题。
    【解决方案2】:

    在 int 格式中,您不应使用 %@,而应使用 %i%@ 用于对象`。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-14
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多