我有一个RowOfPlayerData类型的自定义数据容器对象。当我尝试在NSLog中显示RowOfPlayerData对象时,系统不知道如何显示它,因此它只显示对象的地址。
我试图弄清楚如何在NSLog语句中显示该地址的内容,以便我可以使用这些数据。
我正在尝试在有关NSPredicate的教程中构建它:http://doronkatz.com/how-to-do-amazingly-simple-searches-with-nsar
我试图对输出进行某种描述,但没有成功。
我试图找出如何做到这一点,以便我可以访问数据。这是我使用的测试代码和我目前的一些输出。顺便说一句,我是新手。
如果有人可以帮我以正确的格式显示来自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已启动&lt;&lt;
2010-09-25 13:39:51.313 x1 [3675:207]&lt;#1&gt; row.playerName:Player1
2010-09-25 13:39:51.314 x1 [3675:207]&lt;#2&gt; row.curGameType:NORMAL1
2010-09-25 13:39:51.314 x1 [3675:207]&lt;#3&gt; playerArray:
[/ CODE]
答案 0 :(得分:0)
如果您希望在通过NSLog输出时将对象输出为更合理的对象,那么您只需要为对象实现description
方法。
例如:
- (NSString*)description {
return [NSString stringWithFormat:@"Player: %@, GameType: %@", self.playerName, self.curGameType];
}
然后当你想在日志中输出它时:
NSLog(@"Row - %@", myRowOfPlayerData);
答案 1 :(得分:0)
这里有一个问题:
[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];
}
如果您在对象上调用此方法,则应该从该对象返回数据。