2010-03-12 101 views
4

我想打印所有类型的值,如char,long ...等等,还有nsdate,nsdictionary,frame ....我现在想打印每个类型变量的值。如何在Objective-C中打印不同类型的数据类型?

+0

打印它们正是你在做C.以同样的方式对于Objective-C类型,可以使用NSLog来打印它们并用%@或调用描述和UTF8String来表示它们,并使用%s使用printf和hte打印,或者使用其他方式打印字符串。因此,给定一些NSDate someDate,使用printf打印:printf(“Some date:%s \ n”,[[someDate description] UTF8String]); – 2010-03-12 05:42:03

回答

10

基本类型,如整数,浮点,双,等可以在它们被打印在C相同的方式进行打印,使用printffprintf,等等。如果需要打印你可以经常使用NSObject类的数据的方法(NSString *)description以获得表示对象的数据的NSString。下面是一个例子...

#import <Foundation/Foundation.h> 

int main (int argc, const char * argv[]) { 
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 

    NSString *string = [NSString stringWithFormat:@"Hello World!"]; 
    NSDate *date = [NSDate dateWithTimeIntervalSinceNow:0]; 
    NSArray *array = [NSArray arrayWithObject:@"Hello There!"]; 

    char *c_string = "Familiar ol' c string!"; 
    int number = 3; 

    printf("C String: %s\n",c_string); 
    printf("Int number: %u\n", number); 
    //In 10.5+ do not use [NSString cString] as it has been deprecated 
    printf("NSString: %s\n", [string UTF8String]); 
    printf("NSDate: %s\n", [date.description UTF8String]); 
    printf("NSArray: %s\n", [array.description UTF8String]); 

    //If you are using this information for debugging, it's often useful to pass the object to NSLOG() 

    NSLog(@"NSArray *array = \n%@", array); 

    [pool drain]; 
    return 0; 
} 

编辑:我认为这将有助于看到输出当例子跑了......

C String: Familiar ol' c string! 
Int number: 3 
NSString: Hello World! 
NSDate: 2010-03-12 01:52:31 -0600 
NSArray: (
    "Hello There!" 
) 
2010-03-12 01:52:31.385 printfTest[2828:a0f] NSArray *array = 
(
    "Hello There!" 
) 
+0

你可以初始化常量NSString,就像NSString * string = @“Some string”一样。 stringWithFormat:是一种昂贵的初始化方式,因为它必须解析格式字符串,更不用说不必要的方法调用了。此外,数字是有符号整数,%u是无符号整数。 – 2010-03-12 07:53:10

+0

作为Objective C的新手......在分别打印整数和字符串之前,您所说的“%u”和“%s”分别是什么意思?我注意到它们不是没有印刷的,但它代表什么呢? – arik 2010-11-07 12:30:13

+0

arik-so:%u和%s被称为转义序列。它们在技术上不是Objective-C的一部分,而是printf函数。 http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer=1048379655&id=1043284385 – 2010-11-20 04:47:42

相关问题