如何在NSLog中查看Object的值?

时间:2011-02-28 10:40:30

标签: iphone objective-c object nslog

假设我有一个包含一些数据的对象。

如何使用NSLog查看数据?

如果有人不清楚我的问题,那么可以再问我一次。

8 个答案:

答案 0 :(得分:30)

如果您想查看NSArray和NSDictionary等对象,则可以直接打印NSLog(@"%@",object);

如果它是用户定义的对象,则需要通过使用property(属性)调用来显示。

具有名称对象和属性的用户定义对象,如

NSString *property1;
int property2;
NSMutableArray *property3;

按如下方式在控制台中打印:

NSLog(@"%@, %d, %@" object.property1,object.property2,object.property3);

答案 1 :(得分:19)

如果您在班级中实施-(NSString*)description方法,则可以使用NSLog输出数据摘要。当然,您也可以直接输出任何属性。

例如:

NSLog (@"%@ %d", object, object.integer);

第一部分调用description方法并输出;第二部分获取对象的整数属性的值并输出。

答案 2 :(得分:11)

每个Objective-c对象(来自NSObject)都有一个名为description的属性。因此,如果您想打印有关课程的信息,这是可行的方法。

@implementation MyClass

- (NSString*)description
{
   return [NSString stringWithFormat:@"MyClass:%@", @"This is my class"];
}

所以,如果你这样打电话。

MyClass *myClass = [[MyClass alloc] init];
NSLog(@"%@", myClass);
NSLog(@"%@", [myClass description]); //Same as the line above

然后它会将"MyClass:This is my class"写入控制台(在这种情况下,它会打印两次)。

答案 3 :(得分:7)

实施给定类的 description

-(NSString*)description
{ return [NSString stringWithFormat:@"<%@> name: `%@` size: `%@`", NSStringFromClass(self), self.name, NSStringFromCGSize(self.size)]; }

NSLog(@"%@", object); // <Object> name: `Harry` size: `{2, 2}`

答案 4 :(得分:2)

我会建议:

<强>物件:

对于像Dictionary,Array这样的对象,字符串就像:

NSLog(@"%@", object);

对于像整数这样的基本数据类型

NSLog(@"%i",intVal);

对于类型编码,您应该看到http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html

答案 5 :(得分:2)

使用此课程https://github.com/arundevma/ICHObjectPrinter

NSLog(@"Object description is %@",[ICHObjectPrinter descriptionForObject:person]);

答案 6 :(得分:0)

NSLog(@"My object data:%@",[myObj someData]);
NSLog(@"My object Other data:%@",[myObj someOtherData]);

或直接:

NSLog(@"%@",myObj);
NSLog(@"Description:%@",[myObj description]);

答案 7 :(得分:0)

除Satya的答案外,如果您想查看基本的c数据类型,请使用格式说明符。例如%d表示整数:

NSLog (@"My integer:%d", myObject.myInteger);

完整列表如下:

http://www.cplusplus.com/reference/clibrary/cstdio/printf/