2010-10-16 10 views
5

sto provando ad accedere ai video nella libreria iPhone utilizzando AssetsLibrary Framework con l'aiuto del seguente codice ... ma quando eseguo l'applicazione il codice non funziona ... le risorse dell'array sono ancora vuote ?? Che cosa sto facendo di sbagliato??Accesso ai video nella libreria usando AssestsLibrary framework iPhone?

btw il mio iPhone è un 3G aggiornato a iPhone 4.1 (ma attivi quadro non sta dando alcun errore)

NSMutableArray *assets = [[NSMutableArray alloc]init]; 
ALAssetsLibrary *library =[[ALAssetsLibrary alloc]init]; 

void (^assetEnumerator)(struct ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) { 
     if(result != NULL) { 
       NSLog(@"See Asset: %@", result); 
       [assets addObject:result]; 

      } 
     }; 

    void (^assetGroupEnumerator)(struct ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) { 
     if(group != nil) {NSLog(@"dont See Asset: "); 
       [group enumerateAssetsUsingBlock:assetEnumerator]; 
      } 



     }; 

    assets = [[NSMutableArray alloc] init]; 
    library = [[ALAssetsLibrary alloc] init]; 
    [library enumerateGroupsWithTypes:ALAssetsGroupAlbum 
          usingBlock:assetGroupEnumerator 
         failureBlock: ^(NSError *error) { 
           NSLog(@"Failure"); 
          }]; 

risposta

5

l'aggiornamento 4.1 sembra avere 'rotto 'alcuni degli esempi di selezione immagini, osservare le seguenti righe, che corrono dopo il codice che hai postato:

NSUInteger groupTypes = ALAssetsGroupAlbum | ALAssetsGroupEvent | ALAssetsGroupFaces; 
[assetsLibrary enumerateGroupsWithTypes:groupTypes usingBlock:listGroupBlock failureBlock:failureBlock]; 

Fornisce zero risorse sia sul mio iPhone 4.1 che sul simulatore. Tuttavia, è possibile modificare il gruppoTipi, quindi impostare

NSUInteger groupTypes = ALAssetsGroupAll; 

e si dovrebbe iniziare a vedere alcune risorse.

+0

grazie, ha funzionato anche per me :) – mateusmaso

1

Doppia Init:.

NSMutableArray *assets = [[NSMutableArray alloc]init]; 
ALAssetsLibrary *library =[[ALAssetsLibrary alloc]init]; 

void (^assetEnumerator)(struct ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) { 
if(result != NULL) { 
     NSLog(@"See Asset: %@", result); 
     [assets addObject:result]; 

     } 
}; 

void (^assetGroupEnumerator)(struct ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) { 
    if(group != nil) {NSLog(@"dont See Asset: "); 
      [group enumerateAssetsUsingBlock:assetEnumerator]; 
    } 
}; 

    assets = [[NSMutableArray alloc] init]; 
    library = [[ALAssetsLibrary alloc] init**]; 
    [library enumerateGroupsWithTypes:ALAssetsGroupAlbum 
         usingBlock:assetGroupEnumerator 
        failureBlock: ^(NSError *error) { 
          NSLog(@"Failure"); 
         }]; 
0

Sto utilizzando ELC Image Picker Controller e sta già utilizzando ALAssetsGroupAll e non viene ancora mostrato alcun video.

I risolto con l'aggiunta di un filtro degli asset. Puoi limitare a video, foto o entrambi. Immagino che le foto fossero solo l'impostazione predefinita. Si prega di prendere in considerazione la seguente riga se il precedente non riesce.

[assetGroup setAssetsFilter: [ALAssetsFilter allAssets]];

2

Ho fatto questo in Xcode 4.1, iOS 5:

ALAssetsGroupEnumerationResultsBlock assetEnumerator = ^(ALAsset *result, NSUInteger index, BOOL *stop) { 
    if(result != NULL) { 
     NSLog(@"See Asset: %@", result); 
     [assets addObject:result]; 

    } 
}; 

ALAssetsLibraryGroupsEnumerationResultsBlock assetGroupEnumerator = ^(ALAssetsGroup *group, BOOL *stop) { 
    if(group != nil) {NSLog(@"dont See Asset: "); 
     [group enumerateAssetsUsingBlock:assetEnumerator]; 
    } 
}; 

assets = [[NSMutableArray alloc] init]; 
library = [[ALAssetsLibrary alloc] init]; 
[library enumerateGroupsWithTypes:ALAssetsGroupAlbum 
         usingBlock:assetGroupEnumerator 
        failureBlock: ^(NSError *error) { 
         NSLog(@"Failure"); 
        }]; 

ha funzionato per me.

Problemi correlati