Objective c 如何覆盖对象的描述方法并将其打印出来?

Objective c 如何覆盖对象的描述方法并将其打印出来?,objective-c,nslog,nsobject,Objective C,Nslog,Nsobject,我需要重写description方法来返回对象的内部状态(换句话说,将所有值转储到一行文本中) 在我的模型(班级)中,我有 家庭作业 #import <Foundation/Foundation.h> @interface Homework : NSObject @property (nonatomic, strong) NSString *className; @property (nonatomic, strong) NSString *assignmentTitle; @

我需要重写
description
方法来返回对象的内部状态(换句话说,将所有值转储到一行文本中)

在我的模型(班级)中,我有

家庭作业

#import <Foundation/Foundation.h>

@interface Homework : NSObject

@property (nonatomic, strong) NSString *className;
@property (nonatomic, strong) NSString *assignmentTitle;

@end
我在我的
ViewController

@property (nonatomic, strong) Homework *homeworkAssignment;
我试着把它打印成这样

  NSLog(self.homeworkAssignment.description);

但它似乎不起作用,输出打印出一个逗号“,”。我是否格式化了
NSLog
错误?我是否正确重写了该方法?这是我的第一个应用程序(除了“Hello World”)。

您的代码运行良好,您甚至可以这样记录:

NSLog(@"%@", self.homeworkAssignment);
返回

2013-09-29 23:56:50.375 test[2769:a0b] (null), (null)

尝试将值赋给className和assignmentTitle,这样它就不会返回null:)

关于
说明的实现和日志记录,代码似乎都是正确的。由于输出仅显示逗号,这意味着您的两个属性都包含空字符串。如果它们是
nil
,字符串格式将显示它们为
(null)


nil
指针和对空字符串(
@“
)的引用之间存在差异。

“似乎不起作用”-它会做什么?输出输出输出一个逗号,然后很可能
self.className
self.assignmentTitle
都包含空字符串。它会打印(null)吗如果字符串为空?否,则为
nil
。如果是空字符串,则不会打印任何内容。你将
类名
赋值标题
属性分配到哪里?阅读问题-它不会返回
(null)
。我复制/粘贴了他的代码,并尝试了一个新的项目,这是它返回给我的,但不是OP得到的。不同之处在于,当OP将这两个属性设置为空字符串(这就是为什么他只有一个逗号而没有其他内容)时,您从未为这两个属性设置任何值(因此,
(null)
输出)。它现在可以工作,但我在执行NSLog(self.homeworksignment.description)时收到警告;也就是说(格式字符串不是字符串文字:可能不安全)。你知道我怎样才能摆脱这个问题吗?把你的
NSLog
改成他们回答“滴答”的方式。
2013-09-29 23:56:50.375 test[2769:a0b] (null), (null)