【发布时间】:2016-02-29 08:16:40
【问题描述】:
在 Mac OS X 中加载 mediaSources 属性时出错。
我正在尝试使用 MLMediaLibrary 类获取 Apple Photos 源。
我的应用是沙盒化的,并且对图片文件夹具有只读权限。
我收到了错误:
MLMediaLibrary 获取远程对象代理时出错:Error Domain=NSCocoaErrorDomain Code=4097 "connection to service named com.apple.MediaLibraryService" UserInfo={NSDebugDescription=connection to service named com.apple.MediaLibraryService}
据我所知,错误 4097 是连接中断。
我对 Swift 不是很熟悉,但我确实使用 Objective C 运行了完全相同的测试并得到了相同的结果。
我的猜测是我缺少某种权利。
这是我的(非常简化的)代码:
import Foundation
import MediaLibrary
public class MediaLibrary : NSObject{
var library : MLMediaLibrary!
private func loadSources(){
if let mediaSources = library.mediaSources {
for (ident, source) in mediaSources{
print("Identifier: \(ident)");
}
}
}
public override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
loadSources()
}
public override init(){
super.init()
let options : [String : AnyObject] = [MLMediaLoadSourceTypesKey : MLMediaSourceType.Image.rawValue, MLMediaLoadIncludeSourcesKey : MLMediaSourcePhotosIdentifier]
library = MLMediaLibrary(options: options)
library.addObserver(self, forKeyPath: "mediaSource", options: NSKeyValueObservingOptions.New, context: nil)
library.mediaSources; // trigger load, status will be reported back in observeValueForKeyPath
}
}
【问题讨论】:
-
顺便说一句 - 也尝试过不使用沙盒,结果相同。