ios – 将类的NSArray保存到cacheDirectory

ios – 将类的NSArray保存到cacheDirectory,第1张

概述我想将类的NSArray放到cacheDirectory中.我写了如下,但它返回false.你能告诉我如何解决这个问题吗?谢谢你的好意. let paths2 = NSSearchPathForDirectoriesInDomains( .CachesDirectory, .UserDomainMask, true) let cachesPath: AnyO 我想将类的NSArray放到cacheDirectory中.我写了如下,但它返回false.你能告诉我如何解决这个问题吗?谢谢你的好意.
let paths2 = NSSearchPathForDirectorIEsInDomains(        .CachesDirectory,.UserDomainMask,true)    let cachesPath: AnyObject = paths2[0]    var cachedQuestions:NSArray = questions as NSArray    let filePath = cachesPath.stringByAppendingPathComponent("CachedQuestions")    class Dog {        var ID:Int?        var name:String?        init(ID:Int,name:String) {            self.ID = ID            self.name = name        }    }    var dogs = [Dog]()    dogs.append(Dog(ID:1,name:"Taro"))    dogs.append(Dog(ID:2,name:"jiro"))    var nsArrayDogs:NSArray = dogs as NSArray    let success = nsArrayDogs.writetofile(filePath,atomically: true)    if success {        println("save success")    }
解决方法 Xcode 7.3.1•Swift 2.2.1

您可以使您的Dog class NSCoding兼容:

class Dog: NSObject,NSCoding {    let ID: Int    let name: String    required init(ID: Int,name: String) {        self.ID = ID        self.name = name    }    required init(coder decoder: NSCoder){        self.ID = decoder.decodeObjectForKey("ID") as? Int ?? 0        self.name = decoder.decodeObjectForKey("name") as? String ?? ""    }    func encodeWithCoder(coder: NSCoder) {        coder.encodeObject(ID,forKey: "ID")        coder.encodeObject(name,forKey: "name")    }}

然后,您可以将阵列数据保存到磁盘,如下所示:

class VIEwController: UIVIEwController {    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        // Do any additional setup after loading the vIEw,typically from a nib.        let dog1 = Dog(ID: 1,name: "Taro")        let dog2 = Dog(ID: 2,name: "jiro")        do {            let cachesDirectoryURL = try NSfileManager.defaultManager().URLForDirectory(.CachesDirectory,inDomain: .UserDomainMask,appropriateForURL: nil,create: true)            let array = [dog1,dog2]            let fileURL = cachesDirectoryURL.URLByAppendingPathComponent("CachedQuestions.pList")            let success = NSKeyedArchiver.archiveRootObject(array,tofile: fileURL.path!)            print(success)            // to load it from disk            if let loadedArray = NSKeyedUnarchiver.unarchiveObjectWithfile(fileURL.path!) as? [Dog] {                print(loadedArray.count)   // 2            }        } catch let error as NSError {            print(error.localizedDescription)        }    }    overrIDe func dIDReceiveMemoryWarning() {        super.dIDReceiveMemoryWarning()        // dispose of any resources that can be recreated.    }}
总结

以上是内存溢出为你收集整理的ios – 将类的NSArray保存到cacheDirectory全部内容,希望文章能够帮你解决ios – 将类的NSArray保存到cacheDirectory所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1108692.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存