iOS 9 PHAssetChangeRequest 创建RequestForAssetFromVideoAtFileURL : fails with error code -1

标签 ios objective-c video ios9 phphotolibrary

我正在使用以下代码将视频保存到照片库。

NSString *ss = [finalVideoURL path];

    __block PHObjectPlaceholder *placeholder;


    [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
        PHAssetChangeRequest* createAssetRequest = [PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:[NSURL fileURLWithPath:ss]];
        _placeholder = [createAssetRequest placeholderForCreatedAsset];

    } completionHandler:^(BOOL success, NSError *error) {
        if (success)
        {

            NSLog(@" success iOS 9");
        }
        else
        {
            NSLog(@"%@", error);
        }
    }];

此代码适用于 iOS 8.x。 但它在 iOS 9.x 中失败,错误代码为 -1。 错误是

`Error Domain=NSCocoaErrorDomain Code=-1 "(null)"`

对 iOS 9 中的这种行为有任何想法吗? 任何帮助表示赞赏! 谢谢

最佳答案

只能保存在自己的相册 您需要创建一个相册

//获取自定义相册
- (PHAssetCollection *)getAPPCollection {
// Getting the app album if any: 找是否已经创建自定义相册
PHFetchResult<PHAssetCollection *> *collectionResult = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
for (PHAssetCollection *collection in collectionResult) {
    if ([collection.localizedTitle isEqualToString:appName]) {
        return collection;
    }
}

// Creating the album: 新建自定义相册
__block NSString *collectionId = nil;
NSError *error = nil;
[[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait:^{
    collectionId = [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:appName].placeholderForCreatedAssetCollection.localIdentifier;
} error:&error];
if (error) {
    NSLog(@"创建相册:%@失败", appName);
    return nil;
}
return [PHAssetCollection fetchAssetCollectionsWithLocalIdentifiers:@[collectionId] options:nil].lastObject;
}

关于iOS 9 PHAssetChangeRequest 创建RequestForAssetFromVideoAtFileURL : fails with error code -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38450592/

相关文章:

windows - 如何使用硬件视频缩放器?

javascript - 如何在 HTML5 Video 元素上获取视频的 FrameRate

objective-c - 访问 cocoa 界面生成器 Controller 方法

objective-c - Transient NSPopover 燕子先点击父窗口控件

javascript - 使用 Jquery 或/和 javascript 检测网页中是否正在播放任何视频?

ios - 使用 UIWebView 播放本地 mp4 时出现 _itemFailedToPlayToEnd

objective-c - 无法将文件保存到 iOS 8 上的应用程序组

iOS 内存警告破坏 EAGLView

ios - 取消后 UIActivityViewController 不工作

c++ - 在 Cocos2dx 中绘制矩形