filemanager.createFileAtPath工作不正常

时间:2016-01-31 20:31:48

标签: ios nsurl nsfilemanager

我尝试使用NSFileManager和方法createFileAtPath创建一个PLIST文件。最后,文件被创建,它的大小为0 Bytes,我甚至可以在Finder中看到该文件的特定PLIST-Icon。 但是当我想打开它时(例如使用Xcode),它会说:The data couldn't be read because it isn't in the correct format。 我想写这个文件但是当它的格式不正确时,我不能这样做。

文件创建有问题,但我不知道它是什么。 我希望你能帮助我。 这是我的代码:

pListPath = NSURL(fileURLWithPath: reportsPath.path!).URLByAppendingPathComponent("myReports.plist", isDirectory: false)

                let data: NSData = NSData()
                var isDir: ObjCBool = false

                if fileManager.fileExistsAtPath(pListPath.path!, isDirectory: &isDir)
                    {
                        print("File already exits")
                    }
                    else
                    {
                        let success = fileManager.createFileAtPath(pListPath.path!, contents: data, attributes: nil)

                        print("Was file created?: \(success)")
                        print("plistPath: \(pListPath)")
                    }

reports.path = .../UserDir/.../Documents/Reports

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

filemanager.createFileAtPath绝对正常,
但是你通过将空的NSData对象写入磁盘来创建一个空文件 NSData个对象未隐式序列化为属性列表。

使用NSPropertyListSerialization类或 - 更简单 - 将空字典写入磁盘。

let dictionary = NSDictionary()
let success = dictionary.writeToURL(pListPath, atomically: true)
print("Was file created?: \(success)")
print("plistPath: \(pListPath)")

PS:您不需要从网址

创建网址
pListPath = reportsPath.URLByAppendingPathComponent("myReports.plist", isDirectory: false)

但我建议使用更多描述性变量名称来区分String路径和NSURL,例如pListURLreportsURL