사용자가 선택한 이미지에서 EXIF 데이터를 읽으려고합니다. 나는 이것을 위해 ALAssetLibrary를 사용하고있다. 지금까지 나는 assetForURL:resultBlock:failureBlock:
메소드에 필요한 참조 URL을 얻을 수 있었지만 참조 URL을 가지고 무엇인가하려고하면 EXC_BAD_ACCESS
오류가 발생합니다. 나는이 문제를 내려고 노력했습니다ALAssetsLibrary assetForURL을 사용하는 EXC_BAD_ACCESS 오류 : resultBlock : failureBlock :
assets-library://asset/asset.JPG?id=1000000003&ext=JPG
: 오른쪽 (올바른, 내가 아는 한) 문자열의 결과를 사용하기 전에 URL의
NSLog
, 나가지만, 나는 매번 막 다른 골목을 치는 것처럼 보인다. 나는 Objective-C가 처음 인데요, 그래서 제 코드를 비판 해주십시오.
코드 (지금까지 전체 클래스에서,하지만 난이 충분해야한다고 생각) :
//Class_X.m
-(void)readExifDataFromSelectedImage:(NSURL *)imageRefURL
{
void (^ALAssetsLibraryAssetForURLResultBlock)(ALAsset *) = ^(ALAsset *asset)
{
NSLog(@"Test:Succes");
};
ALAssetsLibrary *myAssetLib;
NSLog(@"%@",imageRefURL);
[myAssetLib assetForURL:imageRefURL
resultBlock:ALAssetsLibraryAssetForURLResultBlock
failureBlock:^(NSError *error){NSLog(@"test:Fail");}];
}
//Class_Y.m
//This also conforms to the UIImagePickerControllerDelegate And the NavigationControllerDelegate protocols:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
self.referenceURL = [info valueForKey:@"UIImagePickerControllerReferenceURL"];
NSString *mediaType = [info
objectForKey:UIImagePickerControllerMediaType];
[self dismissModalViewControllerAnimated:YES];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
UIImage *selectedImage = [info objectForKey:UIImagePickerControllerOriginalImage];
imageView.image = selectedImage;
btnNoPicture.hidden = YES;
btnSelectPicture.hidden = YES;
btnTakePicture.hidden = YES;
imageView.hidden = NO;
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Use this image?"
message:@"Are you sure you want to use this image?"
delegate:self
cancelButtonTitle:@"No"
otherButtonTitles:@"Yes", nil];
[alert show];
[alert release];
}
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)
{
//Do not use the selected image.
imageView.image = nil;
imageView.hidden = YES;
//Restart picking process
}
else
{
// I have an instance variable of type Class_X which i use
// throughout this class; let's call this variable "report".
// I also have the referenceURL stored as an instance variable.
[self.report readExifDataFromSelectedImage:self.referenceURL];
}
}
환호성, 저의 초기 오류를 해결했습니다. 그러나 readExifFromSelectedImage 메서드를 호출 할 때 동일한 (EXC_BAD_ACCES) 오류가 발생 했습니까 (URL을 파싱했는지 상관없이 하드 코드 된 [NSURL URLWithString : @ "assets-library : //asset/asset.JPG? id = 1000000003 & ext = JPG "] [self.report] 객체는 괜찮습니다. 다른 방법은 오류없이 제대로 작동합니다. 미리 감사드립니다 :) – Uxxish
흠, myAssetLib이 정의되지 않은 것 같습니다. 변수를 선언했지만 값을 지정하지 마십시오 ... – omz
나는 그것을 간과 한 방법을 믿을 수 없습니다. 무리 감사! 이제 완벽하게 작동합니다! – Uxxish