27

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

如何使用 NSLog 查看该数据?

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

4

8 回答 8

36

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

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

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

NSString *property1;
int property2;
NSMutableArray *property3;

在控制台中打印它们,如下所示:

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

于 2011-02-28T10:48:11.863 回答
20

如果您-(NSString*)description在您的类中实现该方法,那么您可以使用它NSLog来输出数据的摘要。当然也可以直接输出任意属性。

例如:

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

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

于 2011-02-28T10:51:57.627 回答
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"控制台(在这种情况下它将打印两次)。

于 2011-02-28T10:53:36.223 回答
10

给定类的实现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)`
于 2014-05-07T23:24:31.337 回答
2

我会建议这些:

对象:

对于 Dictionary、Array、Strings 等对象,请执行以下操作:

NSLog(@"%@", object);

对于整数等基本数据类型

NSLog(@"%i",intVal);

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

于 2011-02-28T10:51:33.587 回答
2

使用这个类https://github.com/arundevma/ICHObjectPrinter

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

于 2014-07-07T17:47:38.983 回答
1
NSLog(@"My object data:%@",[myObj someData]);
NSLog(@"My object Other data:%@",[myObj someOtherData]);

或直接:

NSLog(@"%@",myObj);
NSLog(@"Description:%@",[myObj description]);
于 2011-02-28T10:50:57.317 回答
0

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

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

完整列表在这里:

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

于 2011-02-28T10:52:10.840 回答