On all current iOS and OS X platforms, the C int
is a 32-bit integer,
and that is what the %d
format expects on the variable argument list.
If you pass a 64-bit integer then reading the next variable argument
will read the extra 4 zero bytes.
The following table shows which format is for which integer type:
Format C type Swift type
-----------------------------------
%d int Int32
%ld long int Int
%lld long long int Int64
and similarly for the unsigned types.
Alternatively, convert the integer to a NSNumber
object and use
the %@
format, this works
for integers of all sizes. Example:
let value = 1234
let predicate = NSPredicate(format: "value = %@", value as NSNumber)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…