2

NSManagedObjectサブクラスのカスタム記述メソッドを作成しようとすると、そのデータをself.myvarnameに出力する代わりに、「Myvarname」を出力するか、self.userCountを出力して「UserCount」を出力しますか?

この例に従ってください:http://brandontreb.com/objective-c-tutorial-helpful-debugging-by-overriding-the-description-method/

また、xcodeコンソールで「pomyroominstance.name」または「pomyroominstance.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行で中断すると、「部屋の名前は名前です」と出力され、コンソールに「pomyRoom.name」と入力すると「名前」が表示されます。「pomyRoom.descr」と入力すると、「Descr」が表示されます。

4

1 に答える 1

7

他のどちらもフォーマットを完全に正しくしていませんが、とにかく間違ったツリーを吠えています。-descriptionリンクしたチュートリアルからメソッドをコピーしたようですが、クラスに合わせて調整していません。

次のように実装できます。

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

(を呼び出し-intValuecapacityから「%d」フォーマット指定子を使用する必要はありません。)

ただし、デバッグセッション中、またはインスタンスの1つの説明を要求するときに、期待する結果が得られない理由は説明されていません。質問を編集して、説明を求める方法と正確に得られるものの詳細を追加してください。たとえば、インスタンスをコードに記録していますか?その場合は、ロギングステートメントと出力を表示します。poデバッガーで使用していますか?その場合は、実際のコマンドと出力を表示します。

于 2012-06-06T08:42:14.540 に答える