writeToFile在Swift 2.0项目中不起作用

时间:2015-12-18 23:54:29

标签: ios swift nsmutablearray swift2

我正在尝试将NSMutableArray保存到设备上的本地存储。为此,我遵循了一个教程,最后得到了这段代码:

func saveResolutions() {
        let pathsArray = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
        let documentsDirectory = pathsArray[0] as String
        let savePath = documentsDirectory.stringByAppendingPathComponent("resolution_list.plist")
        resolutionItems.writeToFile(savePath, atomically: true)
        
        print("Saved")
    }
    
    func loadResolutions() {
        let pathsArray = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
        let documentsDirectory = pathsArray[0] as String
        let resolutionListPath = documentsDirectory.stringByAppendingPathComponent("resolution_list.plist")
        
        if NSFileManager.defaultManager().fileExistsAtPath(resolutionListPath){
            resolutionItems = NSMutableArray(contentsOfFile: resolutionListPath)!
            tableView.reloadData()
        }
        
        print("Loading Data From Storage")
    }

为了澄清这一点,为了能够使用stringByAppendingPathComponents,我使用SO帖子答案来扩展String,代码如下:

extension String {
    
    func stringByAppendingPathComponent(path: String) -> String {
        
        let nsSt = self as NSString
        
        return nsSt.stringByAppendingPathComponent(path)
    }
    

在示例项目中,这没有问题。它保存到文件,然后在下次启动时加载它。然而,当我试图实现它时,它根本不起作用。因此,我决定在保存后立即检查文件是否存在。要达到我正在使用的目的:

let pathsArray = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
        let documentsDirectory = pathsArray[0] as String
        let resolutionListPath = documentsDirectory.stringByAppendingPathComponent("resolution_list.plist")
    print(NSFileManager.defaultManager().fileExistsAtPath(resolutionListPath))

虽然这应该在保存后立即以逻辑方式打印true(当我运行它时),它会打印false。我尝试重新启动Xcode,清除派生数据,重置模拟器,但似乎没有任何帮助。它仍在返回false

0 个答案:

没有答案