2

尝试为我的 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”,我会得到“Descr”。

4

1 回答 1

7

其他人都没有得到完全正确的格式,但无论如何他们都在叫错树。您似乎已经-description从链接到的教程中复制了该方法,并且没有对其进行调整以匹配您的课程。

你可以像这样实现它:

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

(无需调用-intValueoncapacity然后使用“%d”格式说明符。)

但是,这并不能解释为什么您在调试会话期间或在要求对您的实例之一进行描述时没有获得预期的结果。请编辑您的问题并添加您如何要求描述以及您得到什么的细节。例如,您是否在代码中记录您的实例?如果是这样,请显示日志记录语句和输出。你po在调试器中使用吗?如果是这样,请显示实际的命令和输出。

于 2012-06-06T08:42:14.540 回答