我用下面的代码打开一个文件
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 ];
}
};
Run Code Online (Sandbox Code Playgroud)
s值为'file://home/Users/myName/Desktop/1.scpt'
如果我打电话
bool b=[[NSFileManager defaultManager] fileExistsAtPath:@"file://home/Users/myName/Desktop/1.scpt"];
Run Code Online (Sandbox Code Playgroud)
检查路径s的文件是否存在,它总是返回0
但是如果我在Finder中查看,我发现它的路径是'/Users/myName/Desktop/1.scpt'
bool b=[[NSFileManager defaultManager] fileExistsAtPath:@"/Users/myName/Desktop/1.scpt"];
Run Code Online (Sandbox Code Playgroud)
将返回YES!
如何从NSOpenPanel的url获取正确的字符串路径?
欢迎任何评论
NSString *s=[[panel URL] absoluteString];
Run Code Online (Sandbox Code Playgroud)
应该
NSString *s=[[panel URL] path];
Run Code Online (Sandbox Code Playgroud)
如果您的目标是Snow Leopard或以后我推荐使用
- (void)beginSheetModalForWindow:(NSWindow *)window completionHandler:(void (^)(NSInteger result))handler
Run Code Online (Sandbox Code Playgroud)
因为您使用的方法已被弃用,并且使用块更容易.
| 归档时间: |
|
| 查看次数: |
3434 次 |
| 最近记录: |