33

PhotoKit 的数据模型

 5 years ago
source link: https://www.tuicool.com/articles/U7VFBnY
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

作者:Ole Begemann, 原文链接 ,原文日期:2018-09-28

译者: 张弛 ;校对: numbbbbbYousanflics ;定稿: Forelax

在 iOS 系统中, PhotoKit 框架 不仅被系统的照片 App 所使用,同时它也为开发人员访问设备的照片库提供了接口支持。而它的底层则是 Core Data 实现的。

至少从这两个地方,你就可以确认这一点:

  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 的文件:

/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 模型:

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

在 Xcode 中打开已编译的 Core Data 模型

.mom 文件是 已编译的 Core Data 数据模型。Xcode 无法直接打开它,但可以将它 导入 到另一个 Core Data 模型中。通过如下的步骤,我们就可以在 Xcode 中查看这个模型:

.xcdatamodeld
.mom

不幸的是,编译的模型并不存储 Xcode 的模型编辑器的布局信息,因此你必须手动将编辑器中的实体拖出来一个漂亮的样式中。这花了我几个小时。

温馨提示:你可以使用箭头键(和 shift 键+箭头键)精确定位事物。

专家提示:请勿点击 ⌘Z 撤消移动操作。对图形的编辑不会被 Xcode 视作一个可撤销的操作,因此 Xcode 可能会撤消一开始的导入操作,这意味着你将丢失所有未保存的工作。

带有良好格式的 PhotoKit 的模型

这是与 Xcode 10.0(iOS 12.0)捆绑在一起的 photos-10.0.mom

photos-10.0-core-data-model-5974px.png

并非所有的内容都能在这张图片中被看到。你可以 下载完整模型 并在 Xcode 中查看它的一些属性。

请注意,这不一定是 iOS 上的照片的完整数据模型。更多的一些 Core Data 模型被放置在 PrivateFrameworks/PhotoAnalysis.framework 中。

本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问http://swift.gg。


Recommend

  • 120

    每次写 TableView 都是又爱又恨,代码感觉总是很像,但细节不同又借鉴不了。究其原因就是代码没有真正规范和模块化。在参考了几篇文章后,我总结了一个范式,可以很大程度上对 TableView 的编写做到规范化。本文不仅是对 TableView 的总结,同时也是对协议、枚举等...

  • 126
    • www.cocoachina.com 7 years ago
    • Cache

    TableView 优化之数据模型优化

    website upgrading… 京ICP备110065...

  • 114

    关于数据仓库的概念,这里不再累赘。先看下面的图(数据仓库建设的7个主要环节): 本文,主要针对第三块数据仓库模型设计来讨论交流,尤其是互联网行业。 一、关于数据仓库数据模型 1. 数据仓库数据模型是指使用实体、属性及其关系对企业运营和逻辑规则进行统...

  • 84
    • 掘金 juejin.im 6 years ago
    • Cache

    创建前端数据模型,vue开发必备

    后端的数据都是有对象的,那前端需不需要呢,非常需要!!! 其实,这个库,我们已经用了2年了。 我们将前端所有使用的业务数据模型都定义出来了。 那在实际应用中,有什么用处呢? 减少了无数的冗余代码,避免了非常多容易产生的bug。 我们已经没有出现过什么提交...

  • 54
    • 微信 mp.weixin.qq.com 6 years ago
    • Cache

    HBase篇(2)-数据模型与操作

  • 39

    今天给大家讲一个干货,简单实用,用到了我们今天所说的PhotoKit框架。

  • 32
    • www.cnblogs.com 5 years ago
    • Cache

    iOS开发tips-PhotoKit

    概述 PhotoKit应该是iOS 8 开始引入为了替代之前ALAssetsLibrary的相册资源访问的标准库,后者在iOS 9开始被弃用。当然相对于ALAsse...

  • 20
    • blog.danthought.com 4 years ago
    • Cache

    iOS PhotoKit - 浏览照片和视频

    iOS 中的通过 PhotoKit 提供访问 “照片 App” 中的照片和视频,本文主要讲解使用 PhotoKit 浏览相册中的照片和视频、导出相册中的照片、导出相册中的视频、修改相册中的照片和新增相册中的照片。

  • 4

    PhotoKit 是一个在线图片编辑器,打开即用,支持电脑、手机、平板电脑下的多种主流浏览器。更有强大的 AI 算法加持。@Appinn

  • 3

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK