ios - Mac Catalyst 无法将图像保存在相册中,但不会产生错误
问题描述
我正在将应用程序移植到 Catalyst。该应用程序有一个功能,可以在 Catalyst 环境中将屏幕截图保存到命名相册,在 iOS 环境中保存到相机胶卷。该代码运行良好,并产生一个没有错误的“成功”代码。如果我查看收藏的估计资产数量,每次尝试后它都会增加。但是,在“照片”应用中查看时,相册中没有内容。我的截图在哪里? 以下是相关代码:
func insertImage(image : UIImage, intoAssetCollection collection : PHAssetCollection) {
PHPhotoLibrary.shared().performChanges({
let creationRequest = PHAssetCreationRequest.creationRequestForAsset(from: image)
let request = PHAssetCollectionChangeRequest(for: collection)
if request != nil && creationRequest.placeholderForCreatedAsset != nil {
request!.addAssets([creationRequest.placeholderForCreatedAsset!] as NSFastEnumeration)
}
},
completionHandler: { (success, error) in
if error != nil {
print("Error: " + error!.localizedDescription)
DispatchQueue.main.async {
let ac = UIAlertController(title: "Save error", message: error!.localizedDescription, preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "Done", style: .default))
self.present(ac, animated: true)
}
} else {
DispatchQueue.main.async {
let ac = UIAlertController(title: "Save success", message: "Image saved", preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "Done", style: .default))
self.present(ac, animated: true)
}
}
}
)
专辑收藏来自:
func fetchAssetCollectionWithAlbumName(albumName : String) -> PHAssetCollection? {
let fetchOption = PHFetchOptions()
fetchOption.predicate = NSPredicate(format: "title == '" + albumName + "'")
let fetchResult = PHAssetCollection.fetchAssetCollections(
with: PHAssetCollectionType.album,
subtype: PHAssetCollectionSubtype.albumRegular,
options: fetchOption)
let collection = fetchResult.firstObject
return collection
}
解决方案
推荐阅读
- jquery - 如何使用 multer(或其他)使用 jquery ajax 在 Nodejs 中上传文件?
- python-3.x - 当 ECOS 无法使用约 25,000 个优化变量解决我的 SOCP 时,这意味着什么?
- python - 如何在 Cython 中使用不同的 C++ 编译器?
- c++ - 奇怪的班级演员发生
- express - 如何防止在 API 端点服务器端多次点击?
- c# - 发送数据时,模型中的布尔字段未在控制器中更新
- c# - 将子域映射到 ASP.Net Core 3 中的区域
- iis-7.5 - 内部 II(S) 网站适用于 HTTP(S),但不适用于 HTTP
- python - LSQ 子问题中的奇异矩阵 C 错误
- typescript - ionic 4 - 获取离子切换值作为文本输入并在选择一个选项时关闭所有其他开关