2015-08-14 2 views
0

Я просмотрел много вопросов SO, где пользователь хотел получить доступ к документу в своем каталоге приложений. Я новичок во всем этом и просто хочу получить разъяснения по этому вопросу. Я строй с открытым исходным кодом для content blocker прошивки 9.Получение и запись файла в iOS

File tree

Вы можете увидеть дерево файлов. Интересно, можно ли получить доступ к файлу с именем blockerList.json, который находится в папке Adblock Content Blocker. Моя цель состояла в том, чтобы написать json-файл на основе того, что пользователь хочет построить. Мне нужно иметь возможность изменять содержимое этого файла. Возможно ли это, или я должен прекратить попытки и оставить его таким?

Спасибо за любую помощь.

+2

Вам нужно будет скопировать файл в каталог документов, когда приложение будет запущено в первый раз. Вы не можете писать файлы в своем приложении. – dan

+0

Неясно, когда вы хотите внести изменения в файл, во время сборки или после того, как приложение установлено на устройстве iOS? – zaph

+0

Я хочу отредактировать файл после того, как приложение установлено на устройстве iOS. –

ответ

0

Примечание: У вас есть только разрешение на просмотр файла пакета приложения.

  1. Сначала скопируйте файл в NSDocumentDirectory с атрибутом резервирования. Используйте refrerence copy file to document directory iphone и для How do I prevent files from being backed up to iCloud and iTunes?
  2. Проверьте ссылки ImportingJSONFile и Y6JSONFileManager-iOS, чтобы прочитать и записать изменения в файле JSON.
+0

Этот проект «Y6JSONFileManager-iOS» мало что делает, и обработка ошибок - это комментарий: «// TODO: обрабатывать ошибки». – zaph

+0

Будет ли влиять на оригинальный json-файл? –

+0

будет обрабатывать скопированный файл в каталоге документа. –

0

Приложение, входящее в комплект поставки, только для чтения, как сказал @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) 
} 

Надеются, что это поможет!

+0

Будет ли изменение повлиять на исходный файл json? –

+0

Вы не можете изменить оригинальный json-файл, если он находится в комплекте. Вместо этого вы можете изменить файл в каталоге Document. – Bannings

+0

Как вы думаете, есть ли способ включить json в приложение, чтобы его можно было отредактировать? В приложении я просто [загружаю этот json, чтобы сделать блокировщик содержимого] (https://github.com/jusleg/OpenAdblock/blob/master/Open%20Adblock/Adblock%20Content%20Blocker/ActionRequestHandler.swift). Думайте, что это сработает. Если бы я создал json внутри приложения, а затем загрузил его? Я сожалею о проблемах с noob, я только начинаю разработку iOS. –

Смежные вопросы