いくつかのデータを含むオブジェクトがあるとします。
NSLogを使用してそのデータを確認するにはどうすればよいですか?
誰もが私の質問を明確にしていない場合は、再度私に尋ねることができます。
NSArrayやNSDictionaryなどのオブジェクトを表示したい場合は、NSLog(@"%@",object);
のように直接出力できます。
ユーザー定義のオブジェクトの場合は、プロパティ(属性)を指定して呼び出す必要があります。
名前オブジェクトと次のようなプロパティを持つユーザー定義オブジェクト
_NSString *property1;
int property2;
NSMutableArray *property3;
_
次のようにコンソールでそれらを印刷します。
NSLog(@"%@, %d, %@" object.property1,object.property2,object.property3);
クラスに-(NSString*)description
メソッドを実装すると、NSLog
を使用してデータの概要を出力できます。もちろん、任意のプロパティを直接出力することもできます。
例えば:
NSLog (@"%@ %d", object, object.integer);
最初の部分はdescription
メソッドを呼び出し、それを出力します。 2番目の部分は、オブジェクトの整数プロパティの値を取得して出力します。
すべてのObjective-cオブジェクト(これはNSObjectからのもの)には、description
というプロパティがあります。したがって、クラスに関する情報を印刷したい場合は、これが最適な方法です。
@implementation MyClass
- (NSString*)description
{
return [NSString stringWithFormat:@"MyClass:%@", @"This is my class"];
}
したがって、このような呼び出しを行う場合。
MyClass *myClass = [[MyClass alloc] init];
NSLog(@"%@", myClass);
NSLog(@"%@", [myClass description]); //Same as the line above
次に、"MyClass:This is my class"
をコンソールに送信します(この場合は2回出力されます)。
指定したクラスのdescription
を実装します。
-(NSString*)description
{ return [NSString stringWithFormat:@"<%@> name: `%@` size: `%@`", NSStringFromClass(self), self.name, NSStringFromCGSize(self.size)]; }
NSLog(@"%@", object); // <Object> name: `Harry` size: `{2, 2}`
私はこれらを提案します:
オブジェクト:
辞書、配列、文字列などのオブジェクトの場合、次のようにします。
NSLog(@"%@", object);
整数のような基本的なデータ型の場合
NSLog(@"%i",intVal);
タイプエンコーディングについては、 http://developer.Apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html を参照してください。
このクラスを使用 https://github.com/arundevma/ICHObjectPrinter
NSLog(@"Object description is %@",[ICHObjectPrinter descriptionForObject:person]);
NSLog(@"My object data:%@",[myObj someData]);
NSLog(@"My object Other data:%@",[myObj someOtherData]);
または直接:
NSLog(@"%@",myObj);
NSLog(@"Description:%@",[myObj description]);
Satyaの回答に加えて、基本的なcデータ型を表示する場合は、フォーマット指定子を使用します。整数の%dなど:
NSLog (@"My integer:%d", myObject.myInteger);
完全なリストはここにあります: