OS X开发.第四章,4.1,Sandbox及文件操作

本文介绍了OSX的Sandbox安全机制,详细阐述了如何配置Sandbox,并通过读写操作展示了文件和媒体类型在Sandbox环境下的处理方式,包括读取文件内容、设置媒体资源到ImageView以及文件和媒体的写入操作。强调了在不同环境下的权限配置和注意事项。
摘要由CSDN通过智能技术生成

4.1 Sandbox及文件操作
OS X自10.6伊始就引入了Sandbox机制,此后若想上架App Store就必须开启此操作。Sandbox是系统为应用分配的特定空间,应用只能在此进行文件操作,若想在其它地方读写则必须得到授权,从而保证了系统的安全性。

4.1.1 Sandbox配置
选择Target,项目,点击Capability加号选项,跳出如下界面
在这里插入图片描述

在该界面选择App Sandbox选项,如下图是Sandbox配置选项界面

在这里插入图片描述
File Access为权限类型,在测试环境下全部选择为“Read/Write”即可(Release环境下只可选择需要用到的)。

4.1.2 读
读取操作我们以典型的文件类型和媒体类型进行示例。

1.文件类型的读取操作

let str = try! String(contentsOfFile: "/Users/mac/Desktop/test.sw![在这里插入图片描述](https://img-blog.csdnimg.cn/7a2e98b722794bf89451597d4ec90da4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAa2ljaW5pbw==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
ift", encoding: String.Encoding.utf8)
print(str)

说明:很多类型的文件实际上是非二进制的,这意味着我们可以以文本方式进行操作。上面以swift类型的文件为例,获取其绝对路径,使用**String(contentsOfFile: )**这个构造方法进行初始化,返回该路径下的文件文本内容。

2.媒体类型的读取操作

let data = NSData(contentsOfFile: "/Users/mac/Desktop/ef.png")
imageView.image = NSImage(data: data as! Data)

说明:这里以一个PNG媒体资源为例,可以先根据文件的绝对路径实例化一个NSData类型的数据,然后再调用某控件的资源初始化方法进行设置。当然,NSImage本身还提供了更为便捷的方法以供初始化读取:

imageView.image = NSImage(contentsOfFile: "/Users/mac/Desktop/ef.png")

在这里插入图片描述

4.1.3 写
写入操作仍以典型的文件类型和媒体类型示例。

1.文件类型的写入操作

let content = "OS X is a supreme moden operating system for software engineer and art designer."
let data = content.data(using: String.Encoding.utf8)
let url = URL(string: "file:///Users/mac/Desktop/osx.txt")!
try! data?.write(to: url, options: Data.WritingOptions.withoutOverwriting)

说明:这里需要注意的地方就是URL创建时其参数前部为“file”开头,和读取的URL不一样。data.write() 这个方法第二个参数为创建选项,意为创建文件时是否覆盖、停止操作。

在这里插入图片描述

2.媒体类型的写入操作

let image = NSImage(named: "user")
let data = image?.tiffRepresentation
let url = URL(string: "file:///Users/mac/Desktop/my.png")!
try! data?.write(to: url, options: Data.WritingOptions.withoutOverwriting)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值