Format Specifiers
The format specifiers supported by the NSString
formatting methods and CFString formatting functions follow the IEEE printf specification; the specifiers are summarized in Table 1. Note that you can also use the “n$
” positional specifiers such as %1$@ %2$s
. For more details, see the IEEE printf specification. You can also use these format specifiers with the NSLog
function.
Specifier | Description |
---|---|
| Objective-C object, printed as the string returned by |
|
|
| Signed 32-bit integer ( |
| Unsigned 32-bit integer ( |
| Unsigned 32-bit integer ( |
| Unsigned 32-bit integer ( |
| Unsigned 32-bit integer ( |
| 64-bit floating-point number ( |
| 64-bit floating-point number ( |
| 64-bit floating-point number ( |
| 64-bit floating-point number ( |
| 64-bit floating-point number ( |
| 8-bit unsigned character ( |
| 16-bit Unicode character ( |
| Null-terminated array of 8-bit unsigned characters. Because the |
| Null-terminated array of 16-bit Unicode characters. |
| Void pointer ( |
| 64-bit floating-point number ( |
| 64-bit floating-point number ( |
| 64-bit floating-point number ( |
Length modifier | Description |
---|---|
| Length modifier specifying that a following |
| Length modifier specifying that a following |
| Length modifier specifying that a following |
| Length modifiers specifying that a following |
| Length modifier specifying that a following |
| Length modifier specifying that a following |
| Length modifier specifying that a following |
| Length modifier specifying that a following |
Platform Dependencies
OS X uses several data types—NSInteger
, NSUInteger
,CGFloat
, and CFIndex
—to provide a consistent means of representing values in 32- and 64-bit environments. In a 32-bit environment, NSInteger
and NSUInteger
are defined as int
and unsigned int
, respectively. In 64-bit environments, NSInteger
and NSUInteger
are defined as long
andunsigned long
, respectively. To avoid the need to use different printf-style type specifiers depending on the platform, you can use the specifiers shown in Table 3. Note that in some cases you may have to cast the value.
Type | Format specifier | Considerations |
---|---|---|
|
| Cast the value to |
|
| Cast the value to |
|
|
|
|
| The same as |
pointer |
|
|
The following example illustrates the use of %ld
to format an NSInteger
and the use of a cast.
NSInteger i = 42; |
printf("%ld\n", (long)i); |
In addition to the considerations mentioned in Table 3, there is one extra case with scanning: you must distinguish the types for float
and double
. You should use %f
for float, %lf
for double. If you need to use scanf
(or a variant thereof) with CGFloat
, switch to double
instead, and copy the double
to CGFloat
.
CGFloat imageWidth; |
double tmp; |
sscanf (str, "%lf", &tmp); |
imageWidth = tmp; |
It is important to remember that %lf
does not represent CGFloat
correctly on either 32- or 64-bit platforms. This is unlike %ld
, which works for long
in all cases.
'IPHONE' 카테고리의 다른 글
특정 위치에 있을때 모니터링 하기. (0) | 2013.12.18 |
---|---|
CLLocationManager 상태 체크 예제 코드 (0) | 2013.12.18 |
core data 고유키 값 생성. (0) | 2013.12.11 |
디폴트 edit 버튼. (0) | 2013.12.11 |
Segue 사용하기. (0) | 2013.12.11 |