鑑於這種鍵/值對:
FirstName = "Steve"
如何使用Key值編碼設置屬性值在ABPerson
我想設置一個ABPerson的財產在iPhone地址簿,就像這樣: ABRecordSetValue(person, kABPersonFirstNameProperty, @"Steve", nil);
問題是,我不會總是知道提交什麼密鑰。 (它將相當於一個屬性常量,前面沒有「kABPerson」,後面跟着「屬性」)。 提交的密鑰可以是任何數量的屬性:「JobTitle」,「注」等。 如何將該密鑰翻譯爲地址簿屬性常量。即:
FirstName to kABPersonFirstNameProperty
。
我在想我可以使用Key Value Coding,但是我對如何在這種情況下實現它感到茫然。
爲了提高編碼效率,我試圖避免使用長的Switch
語句,或者使用填充每個可能屬性的數組。
更新
我發現在這裏,我需要通過它的字符串表示訪問一個常數。但我不知道這是否可能。所以kABPersonJobTitleProperty
是一個常數,等於18
。所以,如果下面的代碼工作,我會愛:
NSString *fieldName = [NSString stringWithString:@"JobTitle"];
NSString *propertyName = [NSString stringWithFormat:@"kABPerson%@Property", fieldName];
ABRecordRef person = ABPersonCreate(); ABRecordSetValue(person, propertyName, @"Fisherman", nil);
當然,運行此返回此警告過客「ABRecordSetValue」的論點2將指針整數,未作投。因爲字符串propertyName
不能解析爲它正在尋找的整數或常量。
任何人都可以看到一種方法來使這項工作?
我的設置是相似這裏列出的問題:
Key-Value Coding
我收到我可以控制的XML數據,並把它變成了一個通訊簿條目的屬性。
因爲這些屬性在數據到達我之前的某個時間點是人類可讀的。我正在解析包含「First Name」和「Job Title」等字段的聯繫人列表。我需要能夠將它們解析爲Cocoa'kABPerson ... Property'。做一個大的Switch語句似乎是無效的,儘管你可能是對的;這可能是唯一的方法。 – Andrew 2010-03-14 00:12:15