2011-08-16 54 views
5

我需要從應用程序中引用ABPerson記錄。我使用unique ID提供的唯一標識ABRecord記錄:[ABRecord uniqueId]是不可變的嗎?

- (NSString *)uniqueId 

並將其附加到我的應用內聯繫人記錄中。

此外,我保存ABPerson'svCardRepresentation作爲後備。如果應用程序無法再使用uniqueID定位ABRecord,則應用程序會要求用戶使用保存的vCardRepresentation來恢復該地址簿記錄。一切正常。

不幸的是,一位朋友告訴我,uniqueId不是不可變的:在同步過程中,uniqueId可能會突然改變。

據他介紹,在iOS文檔的某處,Apple解釋說不可改變使用uniqueId標識ABPersons。在OS X的Cocoa文檔中,我沒有找到這樣的提示。

在給定的Mac上,uniqueId可能突然改變嗎?如果這是真的,那麼從外部應用程序中識別ABPerson記錄的正確方法是什麼?

如果uniqueID不是不可變的,我當然可以用一個GUID分配一個自定義屬性。不幸的是,自定義字段不同步。

當然,我寧願使用uniqueId。

+0

@noa:感謝您的編輯! – SteAp

+0

沒有人能夠回答? – SteAp

+0

當然可以。這是一個有趣的問題。 – paulmelnikow

回答

5

對於什麼它的價值,從蘋果公司的techdoc:

kABUIDProperty 該記錄的唯一ID。 保證永遠不會改變,無論記錄改變多少。如果您需要存儲對記錄的引用,請使用此值。類型:kABStringProperty。 適用於Mac OS X v10.2及更高版本。 在ABGlobals.h中聲明。

+0

Thx!當然,我知道這個細節。即使是來自ADC的人也告訴其他開發者不要信任uniqueID。無論如何... – SteAp

2

它看起來像kABUIDProperty方法可能不再工作。我在以下評論中發現了這篇博客文章:
http://blog.clickablebliss.com/2011/11/07/addressbook-record-identifiers-on-mac-and-ios/

一個實例:如果用戶決定打開iCloud同步,那麼該用戶地址簿中的唯一ID將會更改。如果用戶關閉iCloud同步,他們會再次更改。

附錄:查看StackOverflow條目here可能是值得的。

蘋果的文檔也說,這(從鏈接引用):

「推薦的方式來保持長期參照特定記錄是存儲 姓和名,或的哈希姓名和名字 當您通過ID查找記錄時,將記錄的名稱與您的存儲名稱進行比較,如果它們不匹配,則使用存儲的名稱查找記錄,並將新的記錄ID「。

相關問題