假设我有一个包含一些数据的对象。
如何使用 NSLog 查看该数据?
如果有人不清楚我的问题,那么可以再问我一次。
如果您想查看 NSArray 和 NSDictionary 等对象,则可以直接打印NSLog(@"%@",object);
如果它是用户定义的对象,那么您需要通过使用属性(属性)调用来显示。
具有名称对象和属性的用户定义对象,例如
NSString *property1;
int property2;
NSMutableArray *property3;
在控制台中打印它们,如下所示:
NSLog(@"%@, %d, %@" object.property1,object.property2,object.property3);
如果您-(NSString*)description
在您的类中实现该方法,那么您可以使用它NSLog
来输出数据的摘要。当然也可以直接输出任意属性。
例如:
NSLog (@"%@ %d", object, object.integer);
第一部分调用该description
方法并输出该方法;第二部分获取对象的整数属性的值并输出。
每个 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"
控制台(在这种情况下它将打印两次)。
给定类的实现description
。
-(NSString*)description {
return [NSString
stringWithFormat:@"<%@> name: `%@` size: `%@`",
NSStringFromClass(self), self.name,
NSStringFromCGSize(self.size)];
}
NSLog(@"%@", object); // <Object> name: `Harry` size: `{2, 2}`
extension Object: CustomStringConvertible {
var description: String {
"<\(Self.self)> name: `\(name)` size: `\(size)`"
}
}
print(object) // <Object> name: `Harry` size: `(2.0, 2.0)`
我会建议这些:
对象:
对于 Dictionary、Array、Strings 等对象,请执行以下操作:
NSLog(@"%@", object);
对于整数等基本数据类型
NSLog(@"%i",intVal);
使用这个类https://github.com/arundevma/ICHObjectPrinter
NSLog(@"Object description is %@",[ICHObjectPrinter descriptionForObject:person]);
NSLog(@"My object data:%@",[myObj someData]);
NSLog(@"My object Other data:%@",[myObj someOtherData]);
或直接:
NSLog(@"%@",myObj);
NSLog(@"Description:%@",[myObj description]);
除了 Satya 的回答,如果您想查看基本的 c 数据类型,请使用格式说明符。如 %d 表示整数:
NSLog (@"My integer:%d", myObject.myInteger);
完整列表在这里: