swift中的沙盒目录

2015-12-23  本文已影响1109人  __zimu

前言

学习中遇到了需要拿到应用沙盒目录的需求. oc中的写法如下:

@implementation NSString (Path)
//追加文档目录
- (NSString *)appendDocumentPath {
    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject stringByAppendingPathComponent:self.lastPathComponent];
}
//追加缓存目录
- (NSString *)appendCachePath {
    return [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject stringByAppendingPathComponent:self.lastPathComponent];
}
//追加临时目录
- (NSString *)appendTempPath {
    return [NSTemporaryDirectory() stringByAppendingPathComponent:self.lastPathComponent];
}

swift

    //文档目录
    let documentPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! as NSString
    //缓存目录
    let cachePath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! as NSString
    //临时目录
    let tempPath = NSTemporaryDirectory() as NSString

正文

由于需求是根据头像的地址缓存图片, 所以要拿到头像地址中http://xxx.com/xxx.png 中最后一个 / 后面的内容作为 key 来保存
OC中使用了 self.lastPathComponent 来拿到(这里的self是一个NSString)

由于swift中字符串默认是 String 类型,而不是 NSString.所以默认没有上述方法. 解决这个问题方法有2种:

1. 全部转成 OC 字符串

path和头像的地址http://xxx.com/xxx.png全部转成NSString 然后根据 OC 的语法去做

2. 使用public func componentsSeparatedByString(separator: String) -> [String]方法来分割.

这个方法会根据你指定的分隔符,来返回一个数组, 这个数组中包含了根据分隔符分割的几部分.

let filePath = self.documentPath.stringByAppendingPathComponent(iconAddress!.componentsSeparatedByString("/").last!)

同样能解决这个问题.

干货在这

    //返回文件的沙盒目录
    func docuPath(URLString: String) -> String {
        let documentPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! as NSString
        //app.icon!.componentsSeparatedByString("/").last!  -> 根据 "/"来拆分 得到一个数组.拿到最后一个部分
        return documentPath.stringByAppendingPathComponent(URLString.componentsSeparatedByString("/").last!)
    }

拖到你的项目里,拖进去,拖进去...

上一篇 下一篇

猜你喜欢

热点阅读