Macos runModalForTypes可以工作,但setAllowedFileType+;runModal不';T

Macos runModalForTypes可以工作,但setAllowedFileType+;runModal不';T,macos,cocoa,nsopenpanel,Macos,Cocoa,Nsopenpanel,当我使用 NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"pdf", @"PDF", nil]; NSInteger result = [openPanel runModalForTypes:fileTypes]; 它按预期工作(只能选择pdf文件),但当我使用 NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"pdf", @"PDF", nil]; [openP

当我使用

NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"pdf", @"PDF", nil];
NSInteger result    = [openPanel runModalForTypes:fileTypes];
它按预期工作(只能选择pdf文件),但当我使用

NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"pdf", @"PDF", nil];
[openPanel setAllowedFileTypes:fileTypes];
NSInteger result    = [openPanel runModal];

我可以选择所有类型的文件,而不仅仅是PDF文件。文档中说runModalForTypes已被弃用,我们应该使用第二种方法。我做错什么了吗?

您是在为Mac OS X 10.6及更高版本构建吗?根据头文件:“在低于10.6的版本上,此属性将被忽略。”

否则,您的代码看起来是正确的(假设您在某个时候发布了
fileTypes
),并且适合我(在Mac OS X 10.7.2上测试)

一个小建议是使用统一类型标识符来标识PDF,而不是硬编码文件扩展名,如下所示:

NSArray *fileTypes = [NSArray arrayWithObjects:(id)kUTTypePDF, nil];

我正在10.6机器上构建和运行,但我的xcode版本是3.1.3