이 내용은 설명되어 있지 않으므로 님께서는 해당 URL을 프로토 타입 응용 프로그램 이상으로 사용하지 말라고 강력히 권합니다. 즉이 작동하는 것처럼 않습니다 말했다
dispatch_queue_t queue = dispatch_queue_create("photoLoadQueue", 0);
dispatch_async(queue, ^{
NSURL *privateUrl = [NSURL URLWithString:@"file:///var/mobile/Media/DCIM/102APPLE/IMG_2607.JPG";
NSData *imageData = [NSData dataWithContentsOfURL:privateUrl];
dispatch_async(dispatch_get_main_queue(), ^{
self.imageView.image = [UIImage imageWithData:imageData];
});
});
는 당연히 당신이 당신의 전화를위한 유효 하나를 사용하여 URL을 시작하는 데 사용되는 문자열을 교체해야합니다.
프레임 워크를 사용하는 방법과는 다른 문제 일 수 있습니다. 이 같은 absoluteUrls를 저장하는 경우 데이터베이스가 신속하게 죽은 URL을 전체 될 것입니다, 그래서
- 시뮬레이터에서 실행 루트 경로가 정기적으로 응용 프로그램의 출시 사이에 변경 : 여기에 내 머리 위로 떨어져 일부입니다. 이 말은 가장 불편할 것입니다.
- 실제 기기에서는 이미지의 URL이 변경 될 수 있습니다. 제어 할 권한이 없으며 변경 한 후에는 사용자가 앱을 다시 선택하도록하여 앱의 오류가 발생합니다.
- 사진이 나온
PHAsset
의 변경 사항을 알지 못할 것입니다.
- 사진 액세스에 대한 사용자 권한을 우회하는 것일 수 있습니다. 앱에 사진 액세스 권한이 취소되면 어떻게됩니까? 그러나 나중에 사용하기 위해 사진을 저장하는 방법이 많은 문제 일 수 있습니다.
- 파일을 제어하지 않습니다. 사용자가 파일을 삭제하면 어떻게됩니까? 내가 당신이라면
, 나는 PHImageManager requestImageForAsset: targetSize: contentMode: options: resultHandler:
를 사용하여 사진 프레임 워크에서 제대로 이미지를 검색 할 것이고, 당신이 그것으로 어떻게하든위한 합리적인 해상도, 앱의 디렉토리에있는 파일에 저장합니다. 여전히 자산 변경은 없지만 좋은 해결책입니다.
애셋을 저장하고 실제로 필요할 때만 이미지를 요청하려는 경우 transient asset collections을 조사해 볼 가치가 있습니다. 필자는 애셋을 사용하지 않았기 때문에 유용하지 않을 수도 있습니다.
자세한 답변을 보내 주셔서 감사합니다. 당신이 계획 한 잠재적 인 문제를 읽은 후에, 나는 그 접근법에 반대하기로 결정했다. 대신 PHObject에서 "LocalIdentifier"속성을 사용하여 이미지를 고유하게 식별하고 라이브러리에서 가져옵니다. fetchAssetsWithLocalIdentifiers : 메서드를 사용하여 다시 가져올 수있었습니다. – pnavk
고마워, 나는 그것을 보지 못했고, 그것은 내 애플 리케이션도 개선하자! 나는 그렇게 사랑한다. –
귀하의 코드는 '운영이 허용되지 않음'오류를 발생시킵니다. – Mojo66