创建后如何获得指向新 PHCollectionList(或 PHAssetCollection)的指针

Posted

技术标签:

【中文标题】创建后如何获得指向新 PHCollectionList(或 PHAssetCollection)的指针【英文标题】:How do you get a pointer to a new PHCollectionList (or PHAssetCollection) after creating 【发布时间】:2015-08-28 21:54:06 【问题描述】:

我正在尝试创建一个照片“文件夹”并返回一个指向它的指针。这可能吗?以下是我到目前为止的代码。谢谢。

- (PHCollectionList *) CreatePhotoFolder: (NSString *) folderName

    [[phphotoLibrary sharedPhotoLibrary]
        performChanges:^
            // Create the folder
            [PHCollectionListChangeRequest creationRequestForCollectionListWithTitle: folderName];
        
        completionHandler:^(BOOL success, NSError *error) 
            if (!success)  NSLog(@"Error creating Folder: %@", error); 
            else 
                // How do I return the new PHCollectionList* for the new folder?
            
        
     ];

【问题讨论】:

【参考方案1】:

需要先通过占位符获取本地ID。

    __block NSString * localId;
    [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^
        PHAssetCollectionChangeRequest *assetCollectionChangeRequest = [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:@"XD"];
        localId = [[assetCollectionChangeRequest placeholderForCreatedAssetCollection] localIdentifier];
     completionHandler:^(BOOL success, NSError *error) 
        if (!success) 
            NSLog(@"Error creating album: %@", error);
         else 
            NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
            [prefs setObject:localId forKey:@"collection"];
            [prefs synchronize];
        
    ];

然后通过这个本地ID获取PHAssetCollection

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString* colletionId = [prefs stringForKey:@"collection"];
if(colletionId == nil) 
    colletionId = @"";


PHFetchResult *result = [PHAssetCollection fetchAssetCollectionsWithLocalIdentifiers:@[colletionId]  options:nil];
self.assetCollection = [result firstObject];

【讨论】:

谢谢!我能够根据我的需要调整您的样品。您是否有理由将 localId 存储到 *prefs 中而不是简单地使用 [result firstObject] 返回一个指针? 我存储它是因为我需要在其他地方使用它。可以直接使用指针。

以上是关于创建后如何获得指向新 PHCollectionList(或 PHAssetCollection)的指针的主要内容,如果未能解决你的问题,请参考以下文章

如何将 .a 链接到 .so 并为 android 创建新的 .so

关于js中的原型

如何在winform中创建个新控件,让这个新控件指向已创建的控件

如何从 CAS 登录页面添加指向新页面的链接

JS中new的原理

如何使gRPC 获得最佳性能?