2
我用下面的代碼打開一個文件NSOpenPanel URL字符串
NSOpenPanel * panel = [NSOpenPanel openPanel];
[panel setCanSelectHiddenExtension:YES];
[panel setRequiredFileType:@"scpt"];
[panel setAllowsOtherFileTypes:NO];
[panel
beginSheetForDirectory:nil
file:@"Script"
modalForWindow:[self window]
modalDelegate:self
didEndSelector:@selector (openFileDidEnd:returnCode:contextInfo:)
contextInfo:nil];
-(void)openFileDidEnd:(NSSavePanel*)panel returnCode:(int)returnCode contextInfo:(void*)contextInfo
{
if(returnCode == NSOKButton)
{
NSString *s=[[panel URL] absoluteString];
[NSThread detachNewThreadSelector:@selector(setFileString:) toTarget:self withObject:s ];
}
};
價值是 '文件://home/Users/myName/Desktop/1.scpt'
如果我叫
如果與路徑S中的文件存在bool b=[[NSFileManager defaultManager] fileExistsAtPath:@"file://home/Users/myName/Desktop/1.scpt"];
檢查,它總是返回0
,但如果我在搜索檢查,我發現它的路徑是「/用戶/ myNam e/Desktop/1.scpt'
bool b=[[NSFileManager defaultManager] fileExistsAtPath:@"/Users/myName/Desktop/1.scpt"];
會返回YES!
如何從NSOpenPanel的URL獲取正確的字符串路徑?
歡迎任何評論
爲了澄清這個問題,URL響應'absoluteString'和URL的字符串表示形式。這不是一個路徑名,不能用於像'fileExistsAtPath:'這樣的方法。要獲取URL的路徑名,您需要詢問它的「路徑」。 –