以编程方式将资产添加到 iCloud 共享相册
Add assets to an iCloud shared photo album programmatically
使用 PhotoKit 将照片添加到共享的 iCloud 相册有什么限制吗?虽然我可以将新照片添加到作为常规相册的 AssetCollections,但如果 AssetCollection 代表 iCloud 共享相册,它根本不起作用。我还需要添加不同类型的 PHAsset 吗?
如果我将 fetchAssetCollections
调用更改为使用 .albumRegular
而不是 .albumCloudShared
,则下面的代码有效。否则我会得到一个错误:
The operation couldn't be completed. (PHPhotosErrorDomain error -1.)
let sharedAlbums = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .albumCloudShared, options: nil)
let target = sharedAlbums.firstObject
PHPhotoLibrary.shared().performChanges({
let assetChangeRequest = PHAssetChangeRequest.creationRequestForAsset(from: wantedimage)
let assetPlaceHolder = assetChangeRequest.placeholderForCreatedAsset
let albumChangeRequestShared = PHAssetCollectionChangeRequest(for: target!)
let enumeration: NSArray = [assetPlaceHolder!]
albumChangeRequestShared!.addAssets(enumeration)
}, completionHandler: { result, error in
print(result)
print(error)
print(error?.localizedDescription)
})
是的,您不能将图像添加到 iCloud 共享相册。
在执行更改请求之前,您应该对 PHAssetCollection 调用 canPerform(_:)
。
如果您在 albumCloudShared
的 PHAssetCollectionSubtype
上调用 canPerform(_:)
,它将 return false。
例如:
print(collection.canPerform(.createContent)) //false
print(collection.canPerform(.addContent)) //false
我遇到了同样的问题并通过“反馈”应用程序提交了功能请求。
使用 PhotoKit 将照片添加到共享的 iCloud 相册有什么限制吗?虽然我可以将新照片添加到作为常规相册的 AssetCollections,但如果 AssetCollection 代表 iCloud 共享相册,它根本不起作用。我还需要添加不同类型的 PHAsset 吗?
如果我将 fetchAssetCollections
调用更改为使用 .albumRegular
而不是 .albumCloudShared
,则下面的代码有效。否则我会得到一个错误:
The operation couldn't be completed. (PHPhotosErrorDomain error -1.)
let sharedAlbums = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .albumCloudShared, options: nil)
let target = sharedAlbums.firstObject
PHPhotoLibrary.shared().performChanges({
let assetChangeRequest = PHAssetChangeRequest.creationRequestForAsset(from: wantedimage)
let assetPlaceHolder = assetChangeRequest.placeholderForCreatedAsset
let albumChangeRequestShared = PHAssetCollectionChangeRequest(for: target!)
let enumeration: NSArray = [assetPlaceHolder!]
albumChangeRequestShared!.addAssets(enumeration)
}, completionHandler: { result, error in
print(result)
print(error)
print(error?.localizedDescription)
})
是的,您不能将图像添加到 iCloud 共享相册。
在执行更改请求之前,您应该对 PHAssetCollection 调用 canPerform(_:)
。
如果您在 albumCloudShared
的 PHAssetCollectionSubtype
上调用 canPerform(_:)
,它将 return false。
例如:
print(collection.canPerform(.createContent)) //false
print(collection.canPerform(.addContent)) //false
我遇到了同样的问题并通过“反馈”应用程序提交了功能请求。