[MAC OS] NSOpenPanel 使用

本文介绍了在MacOS系统中启用沙盒后如何处理文件保存的权限问题,并详细解释了NSOpenPanel和NSSavePanel的功能差异及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mac OS开启沙盒之后,文件的保存会涉及到一个权限问题。如下图,在Capabilities中,可以勾选的权限一共有5种。

User Selected File 必须勾选,否则 NSOpenPanel 无法起来。

NSSavePanel

需要保存文档到本地,因为不是Pictures、Music或者Movies,不能使用这几个权限,因此使用NSSavePanel让用户自定义保存路径

NSOpenPanel

这个类继承与NSSavePanel,它可以获取选中的文件夹权限,可以在这个文件夹下,读写文件,追加文件路径进行读写,都可以。在需要一次写入多个文件的时候,应该使用NSOpenPanel这个类。如果只进行单个文件读写操作而言,那么可以使用NSSavePanel,这个类的权限,仅限于当前Panel选中的文件。总结起来就是:NSSavePanel权限针对与选中的单个文件操作,NSOpenPanel权限要大一些,可以拥有文件夹的权限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@IBAction  func  showGrantPermissionPanel ( _  sender Any ) {
        print ( "showGrantPermissionPanel" )
        let  openPanel  NSOpenPanel ();
        openPanel . allowsMultipleSelection  false ;
        openPanel . canChooseDirectories  true ;
        openPanel . canChooseFiles  true ;
        openPanel . message  "本应用需要访问该目录,请点击允许按钮"
        openPanel . prompt  "允许"
        openPanel . directoryURL  URL . init ( string NSHomeDirectory ());
        openPanel . begin ( completionHandler : { ( result in
            if  result  ==  NSModalResponseOK  {
                print ( "ddsskj" )
            }
        })
    }

  

分类:  Mac OS
本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/p/6899775.html如需转载请自行联系原作者

demoblog
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值