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)
|