2012-01-19 20 views
2

當我從iOS應用程序調用某個函數時,它將返回一個id數據類型。我看不到這個函數,所以我不知道它在做什麼或返回類型是什麼。如何確定iOS(id)對象的結構?

如果我打印到控制檯使用NSLog("@"...)我得到一個類似於這樣的字符串: 2012-01-18 19:03:08.915 HelloWorld[165:707] Key Press State

有沒有什麼辦法讓我確定這個基本的Id對象的結構?我將如何去獲取這個響應的特定部分,例如"Key press state"。字符串解析看起來像一個可怕的想法,但也許這是唯一的方法。也許數據真的只是一個NSString

謝謝!

回答

16

試試這個:

NSLog(@"Mystery object is a %@", NSStringFromClass([mysteryObject class])); 
+0

好主意。所以這告訴我數據類型是__NSCFNumber。當我嘗試將其插入到表格單元格中時,我在單元格中獲得了非ASCII字符。是否應該執行特定的轉換以將這些字符轉換爲ASCII(UTF8?) – Jonathan

+0

'__NSCFNumber'是'NSNumber'的專用實現類。你可以使用'-stringValue'來獲取文本。 –

2

如果你看<objc/runtime.h>你會看到有關它的類,方法選擇器,ivars等查詢對象的方法。但是,你通常不想這樣做,因爲它破壞封裝並可能導致你依賴於未來可能會改變的實現細節,所以要小心。您可以閱讀更多here