14

我从 PHAssets 加载照片。当我加载一些图像并将它们传递给另一个视图控制器时,我得到了这个错误日志。我似乎无法在网上找到任何关于此的内容。有谁遇到过这个并且知道它是什么?

我也收到了这个错误:

***** Error: logging directory does not exist /var/mobile/Library/Logs/CrashReporter/DiagnosticLogs/
4

2 回答 2

16

可能有以下原因:

1.)当我们尝试使用多个图像视图(Image)时可能会发生这种情况,因此只需图像并尝试释放它,它就会解决问题。

2.)还要避免为存储图像创建过多的属性。

3.)如果我们需要将图像发送到另一个视图,请尝试对其进行压缩。

于 2015-02-13T06:55:14.860 回答
0

把这个留在这里希望这可以帮助:

导入照片

import Photos

然后在您的 info.plist 添加照片使用说明,出于隐私原因,这是强制性的

像这样创建和清空数据数组

var imgData = [Data]()

然后在您的 viewdidload 中检查这样的授权

if PHPhotoLibrary.authorizationStatus() == .authorized{
        print("already allowed")
        getImages()
    }else{
        PHPhotoLibrary.requestAuthorization { [weak self] (newStatus) in
            if newStatus == .authorized{
                print(newStatus)
                self?.getImages()
            }else{
                print("not accepted")
            }
        }
    }

创建一个函数

func getImages(){
        let assetCollection = PHAssetCollection.fetchAssetCollections(with: .smartAlbum, subtype: .smartAlbumDepthEffect, options: nil).firstObject!
            let result = PHAsset.fetchAssets(in: assetCollection, options: nil)
        result.enumerateObjects { (ph_asset, int, unsafe_mutable_pointer) in
            PHImageManager.default().requestImageData(for: ph_asset, options: nil, resultHandler: { (data, string, image_orientation, info) in
                self.imageData.append(data!)
                self.imageString.append(string!)
                DispatchQueue.main.async {
                    self.myCollectionView.reloadData()
                }
            })
        }
    }

扩展您的视图控制器,如下所示

extension ViewController: UICollectionViewDataSource, UICollectionViewDelegate{
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    print(imageData.count)
    return imageData.count
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CustomCVCell
    cell.myImageView.image = UIImage(data: imageData[indexPath.row])
    return cell
}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    print(indexPath.item)
    print(imageString[indexPath.item])
    if let dvc = storyboard?.instantiateViewController(withIdentifier: "Detail") as? DetailViewController{
        dvc.data = imageData[indexPath.item]
        navigationController?.pushViewController(dvc, animated: true)
    }}}

问题可能是因为您正在传递图像,但是如果您传递数据,这将起作用,在您的 detailviewcontroller 中执行此操作

@IBOutlet weak var myImageView: UIImageView!{
    didSet{
        myImageView.image = UIImage(data: data!)
    }
}
于 2019-05-01T16:12:27.867 回答