SWIFT:初始写入/删除后无法删除 Plist 文件
Posted
技术标签:
【中文标题】SWIFT:初始写入/删除后无法删除 Plist 文件【英文标题】:SWIFT: Could not delete Plist file after initial write / deleting 【发布时间】:2015-06-24 15:28:23 【问题描述】:我尝试在值更改时更新我的 plist。 但只有在第一次没有 plist 文件的时候,我才能成功地用 writeToFile 保存我的数据:
var initDic: NSMutableDictionary = [
"gMaxRootDir": gMaxRootDir
"gKeepNumber": gKeepNumber
]
if plistExist
var error: NSError?
if !filemgr.removeItemAtPath(plistpath, error: &error)
println("plistpath: Remove failed: \(error!.localizedDescription)")
if initDic.writeToFile(plistpath, atomically: false) == false
println("plistpath: Save failed")
创建并再次删除文件后是否有东西锁定了文件?我没有把它覆盖。因此,即使更新数据也可以。
【问题讨论】:
【参考方案1】:使用 getter 和 setter。 获取所有旧数据并保存新数据!!! 例如,您在 plist 文件中有 2 行:userNumber 和 userName
func getUserNumber() -> Int
var userNumber = 0
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) as NSArray
let documentsDirectory = paths.objectAtIndex(0) as! NSString
let path = documentsDirectory.stringByAppendingPathComponent("fileName.plist")
var myDict = NSDictionary(contentsOfFile: path)
if let dict = myDict
userNumber = dict.objectForKey("userNumber") as! Int
return userNumber
func setUserName(userName: String)
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) as NSArray
let documentsDirectory = paths.objectAtIndex(0) as! NSString
let path = documentsDirectory.stringByAppendingPathComponent("fileName.plist")
var dict: NSMutableDictionary = ["userNumber": getUserNumber()]
dict.setObject(userName, forKey: "userName")
dict.writeToFile(path, atomically: false)
let resultDictionary = NSMutableDictionary(contentsOfFile: path)
这不是这个问题的最佳解决方案,但它是工作! 如果您可以使用 CoreData 并将您的数据保存在本地数据库中
祝你好运
【讨论】:
插入代码后,运行良好。把它换成我的物品后,它就不起作用了。经过很长时间在下一个添加一个语句后,我发现您无法在此 plist 中保存类型 NSURL。所以没有那种类型,即使我的旧版本也能正常工作。谢谢你的提示。以上是关于SWIFT:初始写入/删除后无法删除 Plist 文件的主要内容,如果未能解决你的问题,请参考以下文章