我需要覆盖description
方法以返回对象的内部状态(换句话说,将所有值转储到单行文本中)。
在我的模特(班级)中我有
Homework.h
#import <Foundation/Foundation.h>
@interface Homework : NSObject
@property (nonatomic, strong) NSString *className;
@property (nonatomic, strong) NSString *assignmentTitle;
@end
Homework.m
-(NSString *)description
{
return [NSString stringWithFormat:@" %@, %@", self.className, self.assignmentTitle];
}
我在ViewController
@property (nonatomic, strong) Homework *homeworkAssignment;
我尝试像这样打印
NSLog(self.homeworkAssignment.description);
但它似乎不起作用,输出打印出逗号“,”。我格式化NSLog
错了吗?我是否正确覆盖了该方法?这是我的第一个应用程序(除了“Hello World”)。
答案 0 :(得分:1)
你的代码工作正常,你甚至可以像这样使用NSLog:
NSLog(@"%@", self.homeworkAssignment);
返回
2013-09-29 23:56:50.375 test[2769:a0b] (null), (null)
尝试为className和assignmentTitle赋值,因此它不会返回null:)
答案 1 :(得分:0)
关于description
和日志记录的实现,代码都显示正确。由于输出仅显示逗号,因此表示您的两个属性都包含空字符串。如果它们是nil
,则字符串格式会将其显示为(null)
。
nil
指针与对空字符串(@""
)的引用之间存在差异。