在Mac OS X中加载mediaSources属性时出错。
我正在尝试使用MLMediaLibrary类获取Apple照片源。
我的应用程序是沙盒的,对图片文件夹具有只读权限。
我得到错误:
获取远程对象代理时发生mlmedialibrary错误:error domain=nscocoaerrordomain code=4097“连接到名为com.apple.medialibraryservice的服务”userinfo=nsdebugdescription=连接到名为com.apple.medialibraryservice的服务
据我所知,错误4097是连接中断。
我对Swift不太熟悉,但我使用目标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
    }
}

最佳答案

结果发现有两件事不对劲:
1。MLMediaLoadIncludeSourcesKey应该指向字符串数组,而不是单个字符串
2。观察键路径错误,应为"mediaSources",缺少一个s

10-06 06:52