2016-05-14 98 views
2

我正在为Mac OS X(10.11)的照片扩展插件工作。使用未解析标识符'PHPhotoLibrary'

我有导入的照片和PhotosUI框架。

除了尝试打电话给PHPhotoLibrary.sharedPhotoLibrary()时,一切都可以。

这将导致一个错误在Xcode 7.3.1(7D1014):

Use of unresolved identifier 'PHPhotoLibrary' 

有其他人遇到这样或知道什么可能会造成这个问题?

+2

是的 - 这个API在OS X上不存在。 – jtbandes

+0

真的吗?那么这将解释这个问题。我正在寻找保存资产,并认为有必要致电图书馆申请变更。将需要阅读更多。谢谢! – adamteale

回答

1

你并不需要PHPhotoLibrary做一个照片编辑扩展在任何iOS或OS X,以及OS X,你不能使用它。

照片编辑扩展的整个工作流程都通过PHContentEditingController协议。在这两个平台上,照片编辑扩展的主视图控制器都实现此协议。它提供了在startContentEditingWithInput:placeholderImage:方法中编辑的资产,当用户完成编辑时,它会调用您的finishContentEditingWithCompletionHandler:方法,以便您可以应用最终质量的编辑并提供输出。

注意我说“当用户完成编辑时”。保存到照片库不是您在扩展代码中执行的操作 - 而是照片会要求您输出最终渲染结果,而照片处理将其保存到库中。

在你finishContentEditingWithCompletionHandler:方法,你应该:

  1. 创建一个从PHContentEditingInput一个PHContentEditingOutput(你在startContentEditingWithInput:placeholderImage:收到)。
  2. 为JPEG文件(或QuickTime电影文件,对视频资源)您的输出保存到该PHContentEditingOutput指定
  3. 调用completionHandler块传递给你的renderedContentURL,通过它您PHContentEditingOutput

您调用完成处理程序触发照片将编辑后的资产保存到库中。

+0

Rickster非常感谢您回复我的帖子。我确切地说,但保存到renderedContentUrl时得到错误 - Xcode说该文件已经存在。我认为这个错误可能与PHPhoto库需要给予扩展名的权限以保存文件有关。 – adamteale

+1

没有权限问题:由于用户选择了您的扩展程序来编辑该资产,因此用户已隐式授予您的扩展权限来编写已编辑的资产。有时你需要删除renderedContentURL上的内容,然后才能编写它。 – rickster

+0

如果我无法在macOS上使用PHPhotoLibrary,还有什么其他API可用于访问Mac上的照片? –