簡體   English   中英

如何在Objective-C中檢查有效對象?

[英]How to check for valid object in Objective-C?

我繼承了從Web服務解析並填寫NSDictionary 在我將要探索的某些情況下,解析器返回一個計數為5的NSDictionary ,但對象無效。 發送給它們的任何消息都會因無法識別的選擇器而失敗,甚至isKindOfClass:也會失敗。

當我控制台中的對象,我看到這一點:

error: Execution was interrupted, reason: Attempted to dereference an invalid
ObjC Object or send it an unrecognized selector.
The process has been returned to the state before expression evaluation.

如果isKindOfClass:在這里不起作用,我如何檢查對象是否無效?

這是崩潰期間控制台的輸出。 你看到有5個空對象的字典,對象9上的po返回無效消息。

在此輸入圖像描述

這是大詞典的po:

在此輸入圖像描述

我希望我能夠在解析器中檢查問題,但我也對如何檢查該無效對象以防止崩潰感興趣。

問題是您嘗試使用整數訪問字典元素,如果對象是字典,則鍵應該是符合復制協議的任何obj-c對象。 您使用0作為integer索引,原始類型不是obj-c對象,您應該將其包裝為NSNumber
另一個問題是NSJSONSerializer返回一個id類型對象,基於解析的JSON的結構,這可能是一個字典或一個數組,你應該總是檢查返回的對象來檢查類型。 我通常總是期望一個字典數組,如果系統只返回一個字典,我只需要那個對象即可創建一個數組。

你的寶想要一個數組 - 但它是一本字典。

這不行

字典不能用整數索引,因為它沒有objectForSubscriptIndex

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM