我查看了许多SO问题,用户想要在其应用程序目录中访问文档。我对这一切都很陌生,只想对此事进行澄清。我建立一个开源content blocker为iOS 9在iOS中检索和写入文件
你可以看到文件树。我想知道是否有可能访问文件blockerList.json这是在文件夹中Adblock内容阻止程序。我的目标是根据用户想要构建的内容编写json文件。我需要能够修改这个文件的内容。这是可能的还是我应该停止尝试并保持这种状态?
感谢您的任何帮助。
我查看了许多SO问题,用户想要在其应用程序目录中访问文档。我对这一切都很陌生,只想对此事进行澄清。我建立一个开源content blocker为iOS 9在iOS中检索和写入文件
你可以看到文件树。我想知道是否有可能访问文件blockerList.json这是在文件夹中Adblock内容阻止程序。我的目标是根据用户想要构建的内容编写json文件。我需要能够修改这个文件的内容。这是可能的还是我应该停止尝试并保持这种状态?
感谢您的任何帮助。
说明:您拥有应用程序捆绑文件的只读权限。
NSDocumentDirectory
与备份属性。使用refrerence copy file to document directory iphone和How do I prevent files from being backed up to iCloud and iTunes?该项目“Y6JSONFileManager-iOS”没有太多的工作,错误处理是这样的评论:“// TODO:处理错误”。 – zaph
这些修改会影响原始的json文件吗? –
它会影响文档目录中的复制文件。 –
应用程序包是只读的,就像@dan说的那样。因此,您必须将文件从捆绑包复制到Document目录,然后才能随时修改文件。
复制文件到文件是这样的:
class func copyFile(fileName: String) {
let destPath: String = getPathInDocument(fileName)
var fromPath = NSBundle.mainBundle().pathForResource("blockerList", ofType: "json")!
var fileManager = NSFileManager.defaultManager()
if !fileManager.fileExistsAtPath(destPath) {
fileManager.copyItemAtPath(fromPath, toPath: destPath, error: nil)
} else {
println("The file allready exists at path:\(destPath)")
}
}
class func getPathInDocument(fileName: String) -> String {
return NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0].stringByAppendingPathComponent(fileName)
}
希望这将帮助你!
修改会影响原始的json文件吗? –
如果原始json文件位于包中,则无法修改它。相反,您可以修改Document目录中的文件。 – Bannings
你认为有一种方法可以将json包含在应用程序中,以便它可以被编辑?在应用程序中,我只是[加载此json以制作内容拦截器](https://github.com/jusleg/OpenAdblock/blob/master/Open%20Adblock/Adblock%20Content%20Blocker/ActionRequestHandler.swift)。是否认为它会工作如果我在应用程序中生成json然后加载它?我很抱歉noob问题,我刚刚开始iOS开发。 –
第一次启动应用程序时,您必须将文件复制到文档目录中。您无法写入应用程序包中的文件。 – dan
在构建时或在iOS设备上安装应用程序之后,您想要更改文件还不清楚吗? – zaph
我想在iOS设备上安装应用程序后编辑文件。 –