
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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)