2016-08-05 50 views
0

我的應用程序崩潰,錯誤線程1:EXC_BAD_INSTRUCTION當這種方法被稱爲:應用程序崩潰時,我打電話requestImage

imageManager.requestImage(for: asset!, targetSize: CGSize(width:100,height:100), contentMode: .aspectFit, options: options, resultHandler: {(image,info) -> Void in}) 

在查看完整的代碼做負載:

override func viewDidLoad() { 
    super.viewDidLoad() 
    collectionView.delegate = self; 
    collectionView.dataSource = self; 

    let fetchResult = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: nil); 
    let asset = fetchResult.firstObject; 

    let options = PHImageRequestOptions() 
    options.deliveryMode = .fastFormat 
    options.isSynchronous = true 

    let imageManager = PHCachingImageManager(); 
    imageManager.requestImage(for: asset!, targetSize: CGSize(width:100,height:100), contentMode: .aspectFit, options: options, resultHandler: {(image,info) -> Void in 
    print("Got image") 
    }) 
} 

任何人都知道可能是什麼導致錯誤?我認爲這是與封閉,但我不知道什麼是錯的...

這裏是我試圖調用該方法的語法:

func requestImage(for asset: PHAsset, targetSize: CGSize, contentMode: PHImageContentMode, options: PHImageRequestOptions?, resultHandler: (UIImage?, [NSObject : AnyObject]?) -> Void) -> PHImageRequestID 

謝謝!

回答

0

好的答案與代碼行無關。我不得不去查看然後調試,然後點擊查看控制檯,所以我可以看到控制檯打印錯誤消息,告訴我將密鑰NSPhotoLibraryUsageDescription添加到Info.plist中。

當您使用照片框架時,您必須包含密鑰並提供想要訪問相機膠捲的原因。一旦我將這個密鑰添加到plist中,一切都奏效了。

0

讓@James Zaghini回答另一個級別。

您還需要檢查UIImage或信息是否爲nil或不。

guard let asset = asset else { return } 

let imageManager = PHCachingImageManager(); 
imageManager.requestImage(for: asset, targetSize: CGSize(width:100,height:100), contentMode: .aspectFit, options: options, resultHandler: {(image,info) -> Void in 
    if let img = image{ 
     print("Got Image") 
    } 
    if let imgInfo = info{ 
     print("Info") 
    } 
}) 
相關問題