Save Data to .plist File in Swift Save Data to .plist File in Swift swift swift

Save Data to .plist File in Swift


Apparently the file is not in a writable location, so I created it in the documents directory.

var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as Stringvar path = paths.stringByAppendingPathComponent("data.plist")var fileManager = NSFileManager.defaultManager()if (!(fileManager.fileExistsAtPath(path))){    var bundle : NSString = NSBundle.mainBundle().pathForResource("data", ofType: "plist")    fileManager.copyItemAtPath(bundle, toPath: path, error:nil)}data.setObject(object, forKey: "object")data.writeToFile(path, atomically: true)

Then, it has to be read from the documents directory.

var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as Stringvar path = paths.stringByAppendingPathComponent("data.plist")let save = NSDictionary(contentsOfFile: path)


Swift 3:

func loadData() {    let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) as NSArray    let documentDirectory = paths[0] as! String    let path = documentDirectory.appending("myData.plist")    let fileManager = FileManager.default    if(!fileManager.fileExists(atPath: path)){        if let bundlePath = Bundle.main.path(forResource: "myData", ofType: "plist"){            let result = NSMutableDictionary(contentsOfFile: bundlePath)            print("Bundle file myData.plist is -> \(result?.description)")            do{                try fileManager.copyItem(atPath: bundlePath, toPath: path)            }catch{                print("copy failure.")            }        }else{            print("file myData.plist not found.")        }    }else{        print("file myData.plist already exits at path.")    }    let resultDictionary = NSMutableDictionary(contentsOfFile: path)    print("load myData.plist is ->\(resultDictionary?.description)")    let myDict = NSDictionary(contentsOfFile: path)    if let dict = myDict{        myItemValue = dict.object(forKey: myItemKey) as! String?        txtValue.text = myItemValue    }else{        print("load failure.")    }}

Read and Write plist file in swift


Check in Xcode 10 swift 4.1

//TODO: for wtite in .plist file        let docsBaseURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!        let customPlistURL = docsBaseURL.appendingPathComponent("custom.plist")        print(customPlistURL.absoluteString)        let dic:[String:Any] = ["key":"val"]        // Swift Dictionary To Data.        do  {        let data = try PropertyListSerialization.data(fromPropertyList: dic, format: PropertyListSerialization.PropertyListFormat.binary, options: 0)            do {                try data.write(to: customPlistURL, options: .atomic)                print("Successfully write")            }catch (let err){                print(err.localizedDescription)            }        }catch (let err){            print(err.localizedDescription)        }