ios - PHAssetChangeRequest 在创建视频 Assets 时总是返回 nil

标签 ios ios8 photosframework phasset

我正在本地文档中保存一个新创建的视频文件。然后我想使用照片框架将它复制到照片库中。

问题是,即使正在写视频(我可以确认它在那里并且可以观看),以下创建请求始终返回 nil:

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{

    // NSString filePath points to the newly-created file in Documents directory
    NSParameterAssert([[NSFileManager defaultManager] isReadableFileAtPath:filePath]);
    // path looks fine

    NSURL* url = [NSURL URLWithString:filePath];
    PHAssetChangeRequest* createAssetRequest = [PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:url];

    // got back nil from creationRequestForAssetFromVideoAtFileURL, so we will assert out here
    NSParameterAssert(createAssetRequest);
}
completionHandler:^(BOOL success, NSError *error) {}];

最佳答案

不出所料,问题出在 URL 上。 url = [NSURL URLWithString:filePath] 没有指向电影文件。如果我通过以下方式(例如)获取 url 就可以了:

NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *documentsURL = [[fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSArray *contents = [fileManager contentsOfDirectoryAtURL:documentsURL
                                       includingPropertiesForKeys:@[]
                                                          options:NSDirectoryEnumerationSkipsHiddenFiles
                                                            error:nil];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"lastPathComponent == 'movie.mov'"];
NSURL* url = nil;
for (NSURL *fileURL in [contents filteredArrayUsingPredicate:predicate]) {
    url = fileURL;
}

关于ios - PHAssetChangeRequest 在创建视频 Assets 时总是返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31527436/

相关文章:

ios8 - iOS 8.0 Beta未知UIKit日志

swift - 照片框架 : contentMode within RequestImageForAsset method

ios - 是否有任何解释 PHAdjustmentData 的标准?

objective-c - 获取自动亮度级别

ios - 为什么在我的应用程序中使用 numberOfRowsInSection 导致永无止境的循环?

ios - 在 iOS 中,即使设备处于同一个位置,也会检测到不同的位置

iOS 临时应用程序 : Cannot be installed at this time

ios - 在 iOS8 中无法获得正确的键盘高度值

ios - Swift 这种情况适合使用 Core Data 吗?

ios - 如何使用照片框架获取引用网址的文件名?