1

RowOfPlayerData 型のカスタム データ コンテナ オブジェクトがあります。NSLog で RowOfPlayerData オブジェクトを表示しようとすると、システムはそれを表示する方法を認識しないため、オブジェクトのアドレスを表示するだけです。

データを使用できるように、そのアドレスにあるものを NSLog ステートメントで表示する方法を見つけようとしています。

NSPredicate に関するチュートリアルでこれを構築しようとしています: http://doronkatz.com/how-to-do-amazingly-simple-searches-with-nsar

出力の何らかの説明を試みましたが、成功しませんでした。

データにアクセスできるように、これを行う方法を見つけようとしました。これが私が使用したテストコードと私が現在持っているいくつかの出力です。ところで、私はこれが初めてです。

playerArray からのデータを正しい形式で表示するのを手伝ってくれる人がいれば、本当に感謝しています。

[コード]

@interface RowOfPlayerData : NSObject {

    NSString    *playerName;
    NSString    *curGameType;
}

@property(nonatomic, retain)    NSString    *playerName;

@property (nonatomic, retain)   NSString    *curGameType;

-(void)addPlayerData2Array;

@end

.m ファイルは次のとおりです。

-(void)addPlayerData2Array {


    NSLog(@">>addPlayerData2Array started<<");
    NSMutableArray *playerArray = [[NSMutableArray alloc] init];
    RowOfPlayerData *row;
    row = [[RowOfPlayerData alloc] init];
    row.playerName = @"Player1";
    row.curGameType = @"NORMAL1";
    NSLog(@"<#1> row.playerName: %@", row.playerName);
    NSLog(@"<#2> row.curGameType: %@", row.curGameType);
    [playerArray addObject:row]; 
    NSString *xx;
    xx = [playerArray objectAtIndex:0];

    NSLog(@"<#3> playerArray: %@", xx);

出力:

addPlayerData2Array を開始しました<<

2010-09-25 13:39:51.313 x1[3675:207] <#1> 行.playerName: Player1

2010-09-25 13:39:51.314 x1[3675:207] <#2> row.curGameType: NORMAL1

2010-09-25 13:39:51.314 x1[3675:207] <#3> playerArray:

[/コード]

4

2 に答える 2

0

オブジェクトを NSLog 経由で出力するときに、より適切なものとして出力したい場合は、descriptionオブジェクトのメソッドを実装するだけです。

例えば:

- (NSString*)description {
    return [NSString stringWithFormat:@"Player: %@, GameType: %@", self.playerName, self.curGameType];
}

次に、ログに出力したい場合:

NSLog(@"Row - %@", myRowOfPlayerData);
于 2010-09-25T22:52:28.647 に答える
0

ここに 1 つの問題があります。

[playerArray addObject:row]; 
NSString *xx;
xx = [playerArray objectAtIndex:0];
NSLog(@"<#3> playerArray: %@", xx);

row文字列ではRowOfPlayerDataなくオブジェクトです。@imaginaryboy のアドバイスに従って、クラスにdescriptionメソッドを追加RowOfPlayerDataし、配列からオブジェクトを取り出すときにクラスが正しく取得されるようにします。

RowOfPlayerData *xx = [playerArray objectAtIndex:0];
NSLog(@"<#3> playerArray: %@", xx);

そうは言っても、あなたがこれに正しい方法でアプローチしているとは思いません。オブジェクトのインスタンス メソッドを呼び出しています-(void)addPlayerData2Arrayが、新しいメソッドを作成RowOfPlayerDataして配列形式で返しています。あなたがすべきことはこれです:

-(void)addPlayerData2Array {
    return [NSArray arrayWithObjects:self.playerName, self.curGameType, nil];
}

オブジェクトでこのメソッドを呼び出す場合は、おそらくそのオブジェクトからデータを返す必要があります。

于 2010-09-25T23:00:38.453 に答える