沙盒 1.1.0

沙盒 1.1.0

测试已测试
语言语言 SwiftSwift
许可证 BSD
发布上次发布2016年3月
SPM支持 SPM

Vincent Esche 维护。



沙盒 1.1.0

  • Vincent Esche

沙盒

沙盒 旨在隐藏使您的应用程序能够访问其自身作用域之外的文件所必需的尴尬物流,同时让您完全控制应用程序的逻辑流程。

功能

沙盒 提供以下功能:

  • 检查是否可以从应用程序访问给定的资源
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')或使用 CocoaPodspod 'Sandbox')将 沙盒 安装到您的项目中。

Swift

沙盒 100% 使用 Swift 实现。

依赖关系

无。

要求。

OS X 10.9+

创建者

Vincent Esche (@regexident)

许可证

沙盒在修改后的BSD-3条款许可证下可用,需遵守署名的额外要求。有关更多信息,请参阅LICENSE文件。