NSOpenpPanel을 사용하여 myfile.plist를 열고 싶지만 사용자가 plist를 방금 선택한 경우에도 myfile.png에 액세스합니다. 나는 이미 png에 액세스하려고 시도했습니다.
NSString* url = [[NSString stringWithFormat:@"file://localhost%@%@%@", pathWithoutFilename, @"/", imageFileName ]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
하지만 :
NSData* imageData = [[NSData alloc] initWithContentsOfURL:nsurl];
NSImage *sourceImage = [[NSImage alloc] initWithData:imageData];
NSImage가 nil입니다.
제가 어떻게하면?
다음은 Sandbox Cocoa 앱용 NSURLBookmarkCreationWithSecurityScope를 사용하여 북마크를 저장하고 검색하는 올바른 방법입니다.
-(void)saveTheNSData:(NSData *)data withFileName:(NSString *)fileName
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:fileName];
[data writeToFile:filePath atomically:NO];
}
-(NSURL*) getNSURLFromBookmarkIfExists:(NSString*) filename forType:(NSString*) type
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:filename];
NSData* data = [[NSData alloc] initWithContentsOfFile: filePath];
if(data != nil)
{
NSURL* outUrl = [NSURL URLByResolvingBookmarkData:[[NSUserDefaults standardUserDefaults] objectForKey:type] options:NSURLBookmarkResolutionWithSecurityScope relativeToURL:nil bookmarkDataIsStale:nil error:nil];
[outUrl startAccessingSecurityScopedResource];
return outUrl;
}
else
return nil;
}
또한 트릭을 수행하는 [NSUserDefaults standardUserDefaults] 를 사용하여 책갈피를 설정하는 올바른 방법 은 이 예제 를 참조하십시오 .
-(void) savePlistWithPlistUrl:(NSURL*) plistUrl andImageUrl:(NSURL*) imageUrl
{
NSData *bookmarkPlist = [self bookmarkFromURL:plistUrl];
NSArray* pathSplitted = [pathFilePlist pathComponents];
NSString* filenamePlist = [pathSplitted objectAtIndex:[pathSplitted count]-1];
NSData *bookmarkImage = [self bookmarkFromURL:imageUrl];
NSArray* pathImageSplitted = [imageUrl pathComponents];
NSString* filenameImage = [pathImageSplitted objectAtIndex:[pathImageSplitted count]-1];
NSUserDefaults* prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:bookmarkPlist forKey:@"ExportPlist"];
[prefs setObject:bookmarkImage forKey:@"ExportImage"];
[prefs synchronize];
// save the data bookmark
[self saveTheNSData: bookmarkPlist withFileName:filenamePlist];
[self saveTheNSData: bookmarkImage withFileName:filenameImage];
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다