2010-09-25 19 views
1

我有一個RowOfPlayerData類型的自定義數據容器對象。當我嘗試在NSLog中顯示RowOfPlayerData對象時,系統不知道如何顯示它,所以它只顯示對象的地址。ObC:如何將內存指針轉換爲數據P

我想弄清楚如何在NSLog語句中顯示什麼是該地址,以便我可以使用這些數據。

我想建立這樣一個關於NSPredicate教程:http://doronkatz.com/how-to-do-amazingly-simple-searches-with-nsar

我試圖做一些輸出的描述,但不succeded。

我試圖弄清楚如何做到這一點,所以我可以訪問數據。這裏是我使用的測試代碼和我目前有的輸出。順便說一句,我是新來的這個。

我真的很感激,如果有人可以幫助我以正確的格式顯示來自playerArray的數據,因爲我只是不明白這一點。

[CODE]

@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> row.playerName:PLAYER1

2010-09-25 13:39:51.314 X1 [3675:207] <#2> row.curGameType:正常1

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

[/ CODE]

回答

0

你有一個問題就在這裏:

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

rowRowOfPlayerData對象,而不是一個字符串。按照@ 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]; 
} 

如果你調用對象的這個方法,你應該是從該對象返回的數據。

0

如果要然後,當你通過NSLog輸出時,你的對象被輸出爲更明智的東西你只需要爲你的對象實現description方法。

例如:

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

然後,當你想在一個日誌輸出它:

NSLog(@"Row - %@", myRowOfPlayerData); 
相關問題