PhotoKit 的數據模型

做者:Ole Begemann,原文連接,原文日期:2018-09-28html

譯者:張弛;校對:numbbbbbYousanflics;定稿:Forelaxgit

在 iOS 系統中,PhotoKit 框架 不只被系統的照片 App 所使用,同時它也爲開發人員訪問設備的照片庫提供了接口支持。而它的底層則是 Core Data 實現的。github

至少從這兩個地方,你就能夠確認這一點:shell

  1. 編寫一個可以訪問照片庫的應用,並使用 -com.apple.CoreData.SQLDebug 1. 來啓動這個應用程序。當你訪問照片庫時,從控制檯就能夠看到 Core Data 的調試信息。
  2. 若是查看 PhotoKit 框架的 class dump,你將會在主要的類中看到對 NSManagedObjectID 和其餘 Core Data 類型的引用,例如, PHObject 有一個 _objectID:NSManagedObjectID 的 ivar

尋找 PhotoKit 的核心數據模型

爲了更好地理解 PhotoKit 框架(特別是它的性能特徵),我檢查了它的數據模型。我在 Xcode 10.0 應用程序的包內容中找到了一個名爲 PhotoLibraryServices.framework / photos.momd / photos-10.0.mom 的文件:swift

/Applications/Xcode-10.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/photos.momd/photos-10.0.mom
複製代碼

你可使用以下的命令來查找 Xcode 中模擬器運行時內的其餘 Core Data 模型:app

find /Applications/Xcode-10.app -name '*.mom'框架

在 Xcode 中打開已編譯的 Core Data 模型

.mom 文件是已編譯的 Core Data 數據模型。Xcode 沒法直接打開它,但能夠將它導入到另外一個 Core Data 模型中。經過以下的步驟,咱們就能夠在 Xcode 中查看這個模型:編輯器

  1. 建立一個新的空項目。由於使用 Xcode 10 在項目以外顯示 Core Data 模型包並非一個好的選擇。
  2. 在項目中建立一個全新的「Core Data 數據模型」文件。 這將建立一個 .xcdatamodeld 包。
  3. 打開新數據模型,而後選擇 編輯器 > 導入.... ,選擇要導入的 .mom 文件。

不幸的是,編譯的模型並不存儲 Xcode 的模型編輯器的佈局信息,所以你必須手動將編輯器中的實體拖出來一個漂亮的樣式中。這花了我幾個小時。佈局

舒適提示:你可使用箭頭鍵(和 shift 鍵+箭頭鍵)精肯定位事物。性能

專家提示:請勿點擊 ⌘Z 撤消移動操做。對圖形的編輯不會被 Xcode 視做一個可撤銷的操做,所以 Xcode 可能會撤消一開始的導入操做,這意味着你將丟失全部未保存的工做。

帶有良好格式的 PhotoKit 的模型

這是與 Xcode 10.0(iOS 12.0)捆綁在一塊兒的 photos-10.0.mom

iOS 12.0 中 PhotoLibraryServices.framework 的 Core Data 數據模型。請下載圖片並在本地打開以得到最佳效果。

並不是全部的內容都能在這張圖片中被看到。你能夠 下載完整模型 並在 Xcode 中查看它的一些屬性。

請注意,這不必定是 iOS 上的照片的完整數據模型。更多的一些 Core Data 模型被放置在 PrivateFrameworks/PhotoAnalysis.framework 中。

本文由 SwiftGG 翻譯組翻譯,已經得到做者翻譯受權,最新文章請訪問 swift.gg

相關文章
相關標籤/搜索