2016-04-25 62 views
-2

我有一個用戶對象的數組,其中之一存儲在屬性_selectedUser。當我登錄它,它顯示爲:iOS:用於檢索數組中屬性值的語法?

{ 
    uid = 5; 
    uname = xxxx; 
} 

然而,當我嘗試用下面的訪問UID,我得到一個錯誤:

NSNumber *useridnum = _selectedUser.uid; 

錯誤:

[NSKnownKeysDictionary1 uid]: unrecognized selector sent to instance

檢索uid值的正確語法是什麼?

+0

它看起來像selectedUser其實是一本字典? _selectedUser [@「uid」]是否工作? –

+0

什麼數組?你有一本字典。使用爲_selectedUser創建和分配值的代碼更新您的問題。 – rmaddy

回答

2

您試圖將密鑰作爲字典上的屬性進行訪問,而不是將其作爲其包含的值訪問。

作爲特區的意見建議,使用此代碼:

NSNumber *useridnum = _selectedUser[@"uid]; 

或者:

NSNumber *useridnum = [_selectedUser objectForKey:@"uid"]; 

您的評論說,對象是NSManagedObject。我不熟悉的核心數據,但它看起來像你需要使用valueForKey:

NSNumber *useridnum = [_selectedUser valueForKey:@"uid"]; 

NSDictionary不直接存儲密鑰的特性;它將它們存儲在某種私人數據結構中。無法將密鑰動態存儲爲屬性而不會混淆運行時,然後只能使用非常有限的一組字符串作爲密鑰(而不是基本上每個可能的對象),因爲密鑰必須是C標識符。

你會得到這個錯誤,因爲當你試圖訪問密鑰作爲一個屬性時,系統發送一條消息給該對象說要調用該屬性的getter方法,但該getter方法不存在,所以該應用程序墜毀。

+0

它目前不是字典。它是一個用戶的NSManagedObject。 – zztop

+1

@zztop你應該在你的問題中指定那個。我對Core Data並不是很熟悉,但是看看這些文檔,看起來你需要使用'valueForKey:'。 – NobodyNada

+0

感謝您花時間回答問題。我會玩弄valueforkey。 – zztop