2010-10-16 34 views
5

Tôi đang cố gắng truy cập video trong thư viện iPhone bằng cách sử dụng AssetsLibrary Framework với sự trợ giúp của mã sau ... nhưng khi tôi chạy ứng dụng mã không hoạt động ... mảng tài sản vẫn trống? tôi đang làm gì vậy ??Truy cập Video trong thư viện bằng AssestsLibrary framework iPhone?

btw iPhone của tôi là một 3G nâng cấp lên iPhone 4.1 (nhưng khuôn khổ tài sản không đưa ra bất kỳ lỗi)

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"); 
          }]; 

Trả lời

5

nâng cấp 4.1 dường như có 'vỡ 'một số ví dụ về công cụ chọn hình ảnh, quan sát các dòng sau, chạy sau mã bạn đã đăng:

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

Điều này mang lại cho không có tài sản cả trên iPhone 4.1 của tôi và giả lập. Tuy nhiên, việc thay đổi groupTypes sẽ giúp, do đó, hãy đặt

NSUInteger groupTypes = ALAssetsGroupAll; 

và bạn sẽ bắt đầu thấy một số nội dung.

+0

cảm ơn, đã làm việc cho tôi quá :) – mateusmaso

1

đúp 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

Tôi đang sử dụng Bộ điều khiển bộ chọn hình ảnh ELC và nó đã sử dụng ALAssetsGroupAll và vẫn không hiển thị bất kỳ video nào.

I giải quyết điều này bằng cách thêm bộ lọc nội dung. Bạn có thể giới hạn các video, ảnh hoặc cả hai. Tôi đoán ảnh chỉ là ảnh mặc định. Vui lòng xem xét các dòng sau nếu thất bại ở trên.

[assetNhóm setAssetsFilter: [ALAssetsFilter allAssets]];

2

Tôi đã làm điều này trong 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"); 
        }]; 

Nó làm việc cho tôi.

Các vấn đề liên quan