swift方法之URLForDirectory

在开发中,我们经常需要访问文件目录,而访问目录的方法里很常用的一个方法叫:
- URLForDirectory:inDomain:appropriateForURL:create:error:

官方的Quick help里这么描述这个方法:Locates and optionally creates the specified common directory in a domain. 中文意思大概为:定位和选择创建指定的常见的目录域

这个方法有五个参数,官方介绍如下:

directory:The search path directory. The supported values are described in NSSearchPathDirectory.  翻译后为:搜索路径目录,支持的值相关描述在NSSearchPathDirectory中,点开NSSearchPathDirectory后发现这是一个枚举:

enum NSSearchPathDirectory : UInt {

        case ApplicationDirectory   

        case DemoApplicationDirectory    

        case DeveloperApplicationDirectory  

        case AdminApplicationDirectory    

        case LibraryDirectory   

        case DeveloperDirectory

        case UserDirectory

        case DocumentationDirectory

        case DocumentDirectory

        case CoreServiceDirectory

        case AutosavedInformationDirectory

        case DesktopDirectory

        case CachesDirectory

        case ApplicationSupportDirectory

        case DownloadsDirectory

        case InputMethodsDirectory

        case MoviesDirectory

        case MusicDirectory

        case PicturesDirectory

        case PrinterDescriptionDirectory

        case SharedPublicDirectory

        case PreferencePanesDirectory

        case ApplicationScriptsDirectory

        case ItemReplacementDirectory

        case AllApplicationsDirectory

        case AllLibrariesDirectory

        case TrashDirectory

}

这个参数里面的参数限定了这个方法中的目录,比较常用的有沙盒里的几个目录,比如DocumentationDirectory,CachesDirectory等等.

domain:The file system domain to search. The value for this parameter is one of the constants described in NSSearchPathDomainMask. You should specify only one domain for your search and you may not specify the NSAllDomainsMask constant for this parameter.

中文意思: 这个参数限定了文件搜索的区域..这个参数的值是NSSearchPathDomainMask描述的常量之一.你应该只指定一个域进行搜索以及不设置 NSAllDomainsMask这个参数...

NSSearchPathDomainMask在文档描述如下:

struct NSSearchPathDomainMask : OptionSetType {

    init(rawValue rawValue: UInt)

    static var UserDomainMask: NSSearchPathDomainMask { get }

    static var LocalDomainMask: NSSearchPathDomainMask { get }

    static var NetworkDomainMask: NSSearchPathDomainMask { get }

    static var SystemDomainMask: NSSearchPathDomainMask { get }

    static var AllDomainsMask: NSSearchPathDomainMask { get }

}

这个结构体中,最常用的参数是UserDomainMask.

url:The name of a directory inside of which you want to create a unique temporary directory for autosaving documents or some other use. This parameter is ignored unless the directory parameter contains the value NSItemReplacementDirectory and the domain parameter contains the value NSUserDomainMask. When creating a temporary directory, the shouldCreate parameter is ignored and the directory is always created.

中文翻译:你想创建一个独特的目录用作自动保存文档或者其他用途,这个参数就是这个目录的名字.当在directory参数中设置为NSItemReplacementDirectory以及domain参数中设置为 NSUserDomainMask的时候

这个参数可以被忽略.当创建一个临时目录的时候,shouldCreate是被忽略的,并且会一直创建目录.

shouldCreate:Specify YES if you want the directory to be created if it does not exist.

如果你想创建一个不存在的目录,你可以设置为YES

error:On input, a pointer to an error object. If an error occurs, this pointer is set to an actual error object containing the error information. You may specify nil for this parameter if you do not want the error information.

当一个指针指向一个错误的对象的时候,他会输出. 如果一个错误出现,这个指针只想的错误对象包涵了错误信息,如果你不想获取到错误信息,你可以在这一项设置为nil.

时间: 2024-10-20 20:03:29

swift方法之URLForDirectory的相关文章

Swift 方法的多面性 (转)

下面引自 objc.io 第16期 http://objccn.io/issue-16-3/ Swift 方法的多面性 虽然 Objective-C 的语法相对于其他编程语言来说写法有点奇怪,但是当你真正使用的时候它的语法还是相当的简单.下面有一些例子: + (void)mySimpleMethod { // 类方法 // 无参数 // 无返回值 } - (NSString *)myMethodNameWithParameter1:(NSString *)param1 parameter2:(N

Swift方法

Swift 中的方法是与特定类型(类和结构体)相关的函 数. 实例方法 隶属于某个特定类型(类或结构体)实例函数. class Counter{ var count = 0 funcincrement() { count++ } funcincrementBy(amount: Int) { count += amount } func reset() { count = 0 } } let counter = Counter() // the initial countervalue is 0

swift 方法功能

一.修改方法的外部参数名称,例子如下 class Counter { var count = 0; func increment() { count++; } func incrementBy(amount:Int, numOfTimes:Int){ count += amount * numOfTimes; } func incrementBy1(#amount:Int, numOfTimes:Int){ count += amount * numOfTimes; } func increme

OC工程调用Swift方法

1.建一个OC工程命名为SwiftOC.如图所示: 2.新建一个swfit文件命名为Test.swift,会弹出提示,选择Create Bridging Header建立桥接文件,系统会建立“工程名-Bridging-Header.h”,如图所示: 3.配置工程设置Defines Module 为Yes 设置Product Module Name 为当前工程名 此时系统会为工程创建一个“工程名-Swift.h”的文件,此文件不可手动创建,必须使用系统创建的. 4.创建一个Test2.swift

关于数据保存的方式(沙盒,解档归档(swift方法))

/// 保存用户信息(保存在沙盒中) - (void)saveUserInfo { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; // iOS 8.0 会直接写入沙盒,无需再使用 `[defaults synchronize];` [defaults setObject:self.username forKey:SKUsernameKey]; [defaults setObject:self.pwd forKe

Swift -- 方法

class Rect{ private struct swidth{ static var width: Int = 0 } private struct sheight{ static var height: Int = 0 } internal class var width: Int{ get{ return swidth.width } set{ swidth.width = newValue } } internal class var height: Int{ get{ return

使用swift语言进行IOS应用开发

在Swift中能够直接使用Objective-C语言提供的api (包括系统框架与自己的定制代码),也能够在Objective-C中使用Swift提供的类和api ,还能够在一个工程中同时混合使用Swift 和Objective-C两种语言,两种语言之间能够互通和互用. 任意Objective-C的框架或C库(包括所有的Objective-C系统框架,例如Foundation.UIKit.SpriteKit以及系统提供的公共c库)作为模块被直接导入Swift 供Swift语言使用. 例如为了使用

Swift项目兼容Objective-C问题汇总

本文是投稿文章,作者:一叶(博客)欢迎将原创文章或者译文投给我们,投稿方式:[email protected]或者在首页点击“投稿爆料” 一.解决问题 Swift 项目需要使用封装好的Objective-c组件.第三方类库,苹果提供的解决方案能够处理日常大部分需求,但还不能称之为完美,混编过程中会遇到很多问 题.本文将Swift兼容Objective-c的问题汇总,以帮助大家更好的使用Swift,内容列表如下: 1. Swift调用Objective-c代码 2. Objective-c调用Sw

[Swift]Day06:函数

函数 参数 外部变量名 一般情况下你可以不指定外部变量名,直接调用函数: func helloWithName(name: String, age: Int, location: String) { println("Hello \(name). I live in \(location) too. When is your \(age + 1)th birthday?") } helloWithName("Mr. Roboto", 5, "San Fra