我从PHAssets加载照片。当我加载一些图像并将它们传递给另一个视图控制器时,我收到此错误日志。我似乎无法在网上找到任何关于此的内容。有人遇到这个,知道它是什么吗?
我也得到了这个错误:
***** Error: logging directory does not exist /var/mobile/Library/Logs/CrashReporter/DiagnosticLogs/
答案 0 :(得分:15)
可能有以下原因:
1.)
当我们尝试使用多个图像视图(图像)时,可能会出现这样的图像并尝试释放它,它将解决问题。
2.)
还要避免为存储图像创建太多属性。
3.)
如果我们需要将图像发送到另一个视图,请尝试压缩它。
答案 1 :(得分: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!)
}
}