1

デバッガーで奇妙な出力を提供しているNSlogがあります。適切な値を表示するにはどうすればよいですか?

 NSError *error = nil;
NSArray *data;

[self setStatus:@"Syncing data..."];
self.userInfo = [self.cloud Authenticate:[self serialNumber]];

if ( self.deviceInfo )
{
    data = [self.device GetData:&error];
    if ( !data )
    {
        [self displayErrorMessage:error];
        data = [NSMutableArray array];
    }

    //data received from device: Log point
    NSLog(@"data received from device: %@",data);

デバッガー出力

   "<DataPoint: 0x1001f81b0>",
"<DataPoint: 0x10012f5f0>",
"<DataPoint: 0x1001f7780>",
"<DataPoint: 0x1001f8780>",
4

3 に答える 3

3

これは、NSObjectのdescriptionメソッドによって返されるデフォルトの文字列であり、ポインタ値を出力するだけです。印刷された適切なデータを確認する場合は、DataPointクラスの説明をオーバーライドします。

- (NSString*) description
{
    // Example:
    return [NSString stringWithFormat: @"ivar1=%@ , ivar2=%@",ivar1, ivar2];
}
于 2013-03-26T17:01:15.290 に答える
0

のオブジェクトをDataPoint配列に格納すると、正しい出力が表示されます。

それらのそれぞれの完全な価値を見たい場合は、を使用する必要があります

for(DataPoint *dp in data){
   NSLog(@"%@",dp.property);//property should be your property name of DataPoint class.
}
于 2013-03-26T16:59:31.813 に答える
0

@Ramyのオーバーライドするための良い提案の+1 description、私は次のように置き換えるのではなく、拡張することをお勧めします:

- (NSString *)description {

    return [NSString stringWithFormat: @"%@: ivar1=%@, ivar2=%@",
        [super description], self.ivar1, self.ivar2];
}

クラスと%pポインタに応答する継承された動作も非常に便利です。

于 2013-03-26T17:14:47.003 に答える