2012-08-30 48 views
8

MPMediaItemPropertyPersistentID的唯一性如何?將ID列表同步到連接到同一iTunes帳戶的其他設備時,它甚至可以工作嗎?MPMediaItemPropertyPersistentID的唯一性如何?

我想要實現存儲的ID作爲一個列表中的iCloud同步的播放列表的解決方案,我需要知道,如果這將是可能的。

回答

7

由於每documentation(重點煤礦) ...

的MPMediaItemPropertyPersistentID標識符的價值仍然存在 在應用程序啓動和跨不改變媒體項目的 同步狀態同步。 值不保證 持續跨越同步/ UNSYNC /同步週期。

如此,因爲它甚至不會,如果在所有堅持在此基礎上,我會感到驚訝,如果它在一個足夠強大的方式堅持跨設備。

+0

我錯過了這部分的文檔。看起來我必須尋找另一種方式... – miho

+1

雖然有點笨重,但您可能必須通過每個MPMediaEntity的valueForProperty數據構建一致的內容。 (即:MPMediaItemPropertyTitle,MPMediaItemPropertyAlbumTitle,MPMediaItemPropertyArtist等) –

4

在我的理解,這是不可能的。我認爲這個ID只對每個設備持久。它不是iTunes Store中特定歌曲的唯一標識符。它只是您自己同步歌曲的ID。

當你閱讀文檔,你會看到這個ID會是多麼脆弱。

「的值不保證跨越同步/ UNSYNC /同步週期持續。」

所以,如果你與iTunes同步你的歌曲庫,並從您的iOS設備和同步再次也許刪除歌曲,並把它返回到您的設備,你可能不會再爲這首歌曲得到相同的ID。當然不是其他設備。

因此,我認爲,您要做的事情不會奏效,除非您在iTunes目錄的每首歌曲或您自己的Mac目錄中的iTunes目錄中獲得全球統一的標識符(Mac必須處理ID )。

2

其他的答案是有點大含糊,所以這裏是從我自己的經驗和測試的答案:

1)不能使用MPMediaItemPropertyPersistentID獲得一個ID,它是設備之間的平等。當設備同步與其他iTunes資料庫或全部音樂從設備中刪除,然後再同步
2)MPMediaItemPropertyPersistentID將改變。

的ID獲取的創建,並在歌曲的設備上同步由iTunes存儲。如果不確定,則ID被刪除。

1

在這裏情況下別人的土地,像我一樣,使用谷歌搜索:

我證實了middaparka我上面的設備,當我的音樂應用程序試圖利用persistentIDs從升級之前的一款iOS升級後說。這些ID已經改變了,我最終(不知情)聽了很多來自我的音樂庫的歌曲,我通常不會聽...

因此,我採取了middaparka的建議,並通過排除哈希值標題,artistName,albumTitle和持續時間。在Core Database初始化期間構建persistentKey將會節省時間,避免在「正常操作代碼」中提取項目時進行多個字符串比較。

persistentKey策略適用於歌曲。但是,當我爲標題,藝術家和發行年份的專輯製作哈希曲目時,我最終遇到了一次碰撞。

我有兩張1976年發行的不同藝術家的同名專輯。當專輯標題和藝術家的哈希值是獨佔的時候,他們互相取消了。我結束了使用散列的時間而不是藝術家,這工作。

我可能會最終提煉出生成persistentKeys的算法...