沙盒 旨在隐藏使您的应用程序能够访问其自身作用域之外的文件所必需的尴尬物流,同时让您完全控制应用程序的逻辑流程。
沙盒 提供以下功能:
func needsPermissionForFileAtURL(fileURL: NSURL, error: NSErrorPointer = nil) -> Bool
func askUserForSecurityScopeForFileAtURL(fileURL: NSURL, error: NSErrorPointer = nil) -> NSURL?
func accessSecurityScopedFileAtURL(fileURL: NSURL, closure: () -> ()) -> Bool
func accessAndIfNeededAskUserForSecurityScopeForFileAtURL(fileURL: NSURL, closure: () -> ()) -> Bool
let permissionManager = PermissionManager.defaultManager
permissionManager.accessAndIfNeededAskUserForSecurityScopeForFileURL(fileURL) {
// read/write fileURL
}
在某个时候,您的应用程序可能需要从可能 来自不同目录(甚至 磁盘卷)的众多文件中 访问数十甚至数百个文件。逐个访问文件(并且可能会请求用户权限)是 笨拙的,并且很快会让用户感到 厌烦。
沙盒 提供了一个方便的函数用于这种情况
func NSURL.groupByCommonPrefixURLs_sbx([NSURL]) -> ([NSURL: [NSURL]])`
它根据文件的路径确定最佳的资源分组,这样您就可以将权限对话框的数量减少到最小,如下所示:
let permissionManager = PermissionManager.defaultManager
for (groupCommonFileURL, groupFileURLs) in NSURL.groupByCommonPrefixURLs_sbx(fileURLs) {
permissionManager.accessAndIfNeededAskUserForSecurityScopeForFileURL(groupCommonFileURL) {
for fileURL in groupFileURLs {
// read/write fileURL
}
}
}
沙盒 包含一个演示应用程序。(注意:请确保在文本字段中输入或复制粘贴文件路径,就像使用拖放一样,操作系统会自动为您创建一个安全范围。)
只需将 "Sandbox/Classes/..."
文件夹中的文件复制到您的项目中。
另外,您可以使用 Carthage(github 'regexident/Sandbox'
)或使用 CocoaPods(pod 'Sandbox'
)将 沙盒 安装到您的项目中。
沙盒 100% 使用 Swift 实现。
无。
OS X 10.9+
Vincent Esche (@regexident)
沙盒在修改后的BSD-3条款许可证下可用,需遵守署名的额外要求。有关更多信息,请参阅LICENSE
文件。