自定义描述方法不起作用

时间:2012-06-05 20:53:54

标签: objective-c ios xcode

尝试为我的NSManagedObject子类编写自定义描述方法而不是在self.myvarname中打印该数据,而是打印出“Myvarname”或打印self.userCount,它打印“UserCount”?

遵循此示例:http://brandontreb.com/objective-c-tutorial-helpful-debugging-by-overriding-the-description-method/

另外,为什么在xcode控制台中输入“po myroominstance.name”或“po myroominstance.usage”时,它说没有找到属性(给定下面的课程)?

这是我的班级:

.h
===================
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>


@interface Rooms : NSManagedObject
{
  NSString *name;
  NSNumber *capacity;
  NSString *descr;
  NSString *usage;
}

@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * capacity;
@property (nonatomic, retain) NSString * descr;
@property (nonatomic, retain) NSString * usage;

@end


.M
==================
#import "Rooms.h"

@implementation Rooms

@dynamic name;
@dynamic capacity;
@dynamic descr;
@dynamic usage;

-(NSString *) description 
{
    return [NSString stringWithFormat:@"ID: %@ Name: %@ Website: %n",
        usage  ,descr,name];
}

@end

更新1:============================================ =============

====== My break point is on this line ==========
Room *myRoom = [Room findFirst];
NSLog(@"The room name is %@", myRoom.name);
================================================

如果我在上面的NSlog行打破,顺便打印出“房间名称是名称”,然后在控制台中键入“po myRoom.name”,我得到“姓名”。如果我输入“po myRoom.descr”,我会得到“描述”。

1 个答案:

答案 0 :(得分:7)

其他任何一个都没有让格式化得非常正确,但无论如何它们都在咆哮错误的树。您似乎已经复制了链接到的教程中的-description方法,并且未对其进行调整以匹配您的课程。

你可以像这样实现它:

- (NSString*) description
{
    return [NSString stringWithFormat:@"<%@ %p> name %@, capacity %@, descr %@, usage %@", [self class], self, name, capacity, descr, usage];
}

(无需在-intValue上调用capacity,然后使用“%d”格式说明符。)

但是,这并不能解释为什么在调试会话期间或者在询问某个实例的描述时没有得到预期的结果。请修改您的问题,并添加您要求描述的具体内容以及您正在获得的完全。例如,您是否在代码中记录实例?如果是,请显示日志记录语句和输出。你在调试器中使用po吗?如果是,请显示实际命令和输出。