我查看了許多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設備上安裝應用程序後編輯文件。 –