2015-11-12 2 views
0

Я хочу получить PHAsset, используя assetURL. Я использовал следующий код:Как получить PHAsset из frameworkURL в фреймворке?

NSURL *assetURL=[NSURL URLWithString:file.filePath]; 
     PHFetchResult *fetchResult=[PHAsset fetchAssetsWithALAssetURLs:@[assetURL] options:nil]; 
     PHAsset *asset= [fetchResult firstObject]; 

file.filePath имеет URL активов Im получая от

[[PHImageManager defaultManager] 
          requestImageDataForAsset:asset 
          options:imageRequestOptions 
          resultHandler:^(NSData *imageData, NSString *dataUTI, 
              UIImageOrientation orientation, 
              NSDictionary *info) 
          {[uploadingFile setValue:[NSString stringWithFormat:@"%@",[info valueForKey:@"PHImageFileURLKey"]] forKey:@"filePath"];} 

Но Im всегда получаю значение fetchResult в nil. Может ли кто-нибудь сказать мне, где я ошибаюсь? Это потому, что я пропустил неправильный тип URL?

ответ

0

вы можете использовать это:

PHContentEditingInputRequestOptions * editOperations = [[PHContentEditingInputRequestOptions alloc]init]; 
    editOperations.networkAccessAllowed = NO; 
    editOperations.canHandleAdjustmentData =^BOOL(PHAdjustmentData * data){ 
     return NO; 
    }; 

    dispatch_semaphore_t sema = dispatch_semaphore_create(0); 
    dispatch_group_t group = dispatch_group_create(); 
    dispatch_async(dispatch_get_global_queue(0, 0), ^{ 
     [asset requestContentEditingInputWithOptions:editOperations completionHandler:^(PHContentEditingInput * _Nullable contentEditingInput, NSDictionary * _Nonnull info) { 
      if (asset.mediaType & PHAssetMediaTypeImage) { 
       BOOL isDownLoading = ![info objectForKey:PHImageCancelledKey] 
       && ![info objectForKey:PHImageErrorKey] && ![info objectForKey:PHImageResultIsDegradedKey]; 
       if (isDownLoading) { 
        mode_asset.mode_fileUrl = [contentEditingInput.fullSizeImageURL absoluteString]; 
        mode_asset.mode_UTI = contentEditingInput.fullSizeImageURL.pathExtension; 
        mode_asset.mode_fileName = contentEditingInput.fullSizeImageURL.lastPathComponent; 
       } 
       if (mode_asset.mode_filePathBlock) { 
        mode_asset.mode_filePathBlock(mode_asset); 
       } 


      } 
       //    dispatch_group_leave(group); 

       //    dispatch_semaphore_signal(sema); 

     }]; 
    }); 
+0

Я нашел вопрос, вызовите этот метод, приводят к проблеме, этот метод может блокировать пользовательский интерфейс, подожди блок обратного вызова, скажите, пожалуйста, – Raybon

Смежные вопросы