Я разработал этот большой модуль Titanium для доступа к ALAsset. https://github.com/amigoni/titanium-mobile-alasset-moduleМодуль ALAsset для титанов работает на симуляторе, но падает на устройство какие-либо намеки?
Я пытаюсь получить доступ к данным и информации о снимках. Кажется, он отлично работает в симуляторе, но не на устройстве.
Вот где я подозреваю, что код
-(void)assetThumbnails:(id)args
{
ENSURE_UI_THREAD_1_ARG(args);
ENSURE_SINGLE_ARG(args,NSDictionary);
id onthumb = [args objectForKey:@"thumbnailCallback"];
NSString *group = [args objectForKey:@"group"];
ENSURE_STRING_OR_NIL(group);
int page = [TiUtils intValue:[args objectForKey:@"page"] def:1] - 1;
int perPage = [TiUtils intValue:[args objectForKey:@"perPage"] def:25];
int fromIndex = page * perPage;
int toIndex = fromIndex + perPage;
NSUInteger groupTypes = ALAssetsGroupSavedPhotos;
if(group == nil){
group = @"savedPhotos";
}
if([group isEqualToString:@"savedPhotos"]){
groupTypes = ALAssetsGroupSavedPhotos;
} else if([group isEqualToString:@"photoStream"]){
groupTypes = ALAssetsGroupPhotoStream;
} else if([group isEqualToString:@"faces"]){
groupTypes = ALAssetsGroupFaces;
} else if([group isEqualToString:@"all"]){
groupTypes = ALAssetsGroupAll;
}
NSMutableArray *assets = [[NSMutableArray alloc] init];
RELEASE_TO_NIL(thumbCallback);
thumbCallback = [onthumb retain];
void (^assetGroupEnumerator) (ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop){
if(group != nil) {
[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if(result != nil)
{
if((index >= fromIndex) && (index <= toIndex)){
NSURL *url = [[result defaultRepresentation] url];
NSString *sUrl = [url absoluteString];
NSDictionary *metadata = result.defaultRepresentation.metadata;
UIImage *thumbnail = [UIImage imageWithCGImage:[result thumbnail]];
NSDictionary *event = [NSDictionary
dictionaryWithObjectsAndKeys:
[[[TiBlob alloc] initWithImage:thumbnail] autorelease],
@"thumbnail",
NUMINT(index),
@"index",
sUrl,
@"url",
metadata,
@"metadata",
nil];
[assets addObject:event];
}
} else {
if (thumbCallback!=nil)
{
NSDictionary *event = [NSDictionary dictionaryWithObjectsAndKeys:assets,@"assets", nil];
[self _fireEventToListener:@"onThumbnail" withObject:event listener:thumbCallback thisObject:nil];
[assets release];
}
}
}];
}
};
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:groupTypes
usingBlock:assetGroupEnumerator
failureBlock:^(NSError *error) {}];
[library release];
}
Что интересно, что код, кажется, крах после 26-го пункта. Что, как вы видите из приведенного выше кода, будет первой из второй страницы.
Я действительно мало знаю о Objective C и искал некоторую помощь.
Thanks