我在记录自定义对象时遇到了一些问题。
具有DateObject类的示例:
标题
@interface DateObject : NSObject {
NSString *month;
NSString *day;
NSString *year;
}
@property (nonatomic, retain)NSString *month;
@property (nonatomic, retain)NSString *day;
@property (nonatomic, retain)NSString *year;
- (NSString *)description;
实现:
#import "DateObject.h"
@implementation DateObject
@synthesize month, day, year;
- (NSString *)description{
NSString *result = [NSString stringWithFormat:@"{\n\tMonth:\t%@\n\tDay:\t%@\n\tYear:\t%@\n}",self.month, self.day, self.year];
return result;
}
@end
现在我像这样设置值:
DateObject *date = [[[DateObject alloc] init] autorelease];
date.month = @"Mar";
date.day = @"04";
date.year = @"2013";
使用此
记录对象NSLog(@"{\n\tMonth:\t%@\n\tDay:\t%@\n\tYear:\t%@\n}",date.month, date.day, date.year);
结果(如预期的那样)
2013-03-04 10:42:08.821 LoggingCustomObjectsExample[4389:c07] {
Month: Mar
Day: 04
Year: 2013
}
现在尝试使用
记录对象NSLog(@"%@", date);
我希望我的description
方法被调用(实际上它被调用),但结果总是未格式化:
2013-03-04 10:59:18.835 LoggingCustomObjectsExample[4389:c07] DateObject: "{\n\tMonth:\tMar\n\tDay:\t04\n\tYear:2013}";
我不明白为什么转义序列在这里不起作用。 我错过了什么吗?
答案 0 :(得分:2)
这是NSLog
的已知行为,它正在转义那些换行符和制表符,因此输出保留在一行上(请参阅此SO question)。
我会说你不想在你的description
输出中输入换行符,因为它们没有添加任何值。