2012-04-27 3 views
0

내가 NSOpenPanel 오픈 이미지 코드 아래 사용하지만수 NSOpenPanel

//panel=NSOpenPanel 
NSString *imgg = [NSString stringWithFormat:@"%@",panel.URL]; 
self.imgUser.image=[NSImage imageNamed:imgg]; 

답변

6

문제는 + [NSImage imageNamed이 :]이다 작동하지 않습니다하지 열린 이미지 URL로 이미지를로드하지 않습니다. 문서를 읽으면 실제로 무엇을하는지 설명합니다 : 캐시에 저장된 이미지를 해당 이름으로 찾거나 해당 번들 아래 AppKit의 프레임 워크 또는 App 번들 프레임 워크에 저장합니다.

URL로 이미지를 실제로 여는 방법은 매우 다양합니다. 당신은 아마 찾고있는 하나입니다 또한

NSImage *image = [[[NSImage alloc] initWithContentsOfURL:panel.URL] autorelease]; 

, 측면의 문제로, 당신이 경로로 URL을 설정하려는 방법이 올바르지 않습니다. file : //localhost/Users/user437064/Pictures/mypic.jpg에 대한 NSURL이 있다면 그냥 문자열로 변환하면 @ "file : //localhost/Users/user437064/Pictures/mypic.jpg"가됩니다. 이는 경로 기반 API에서 사용할 수있는 경로가 아닙니다. 당신이 실제로 원하는 것은 @ "/ Users/user437064/Pictures/mypic.jpg"이며 당신이 얻는 방법은 - [NSURL path]입니다. 그래서 "NSString * imgg = [panel.URL 경로];". 그러나 이것은 부적절합니다. 아주 오래된 버전의 OS X 또는 out-of-the-way API를 다룰 필요가 없다면 경로를 사용하는 각 메소드에 대해 URL을 사용하는 메소드가 거의 항상 존재하며 흔히 경로 기반 메소드는 더 이상 사용되지 않습니다.

더 멀리 떨어져있는 문제로 문자열을 문자열로 변환 할 때 stringWithFormat :이 필요하지 않습니다. "[panel.URL description]"은 "[NSString stringWithFormat : @"% @ ", panel.URL]"과 동일한 결과를 제공합니다. 훨씬 간단하고 효율적입니다.

+0

정말 고마워요. –