Im пытается прочитать plist, который содержит массив Ints. Это мой первый раз, когда я их использую, и я могу читать их в порядке, но plist не обновляется, когда я пишу на него.чтение/запись в массив plist с Swift
вот мой код для чтения и записи ..
class FavouritesManager {
var myArray:NSMutableArray = [0]
func loadDataPlist(){
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) as NSArray
let documentsDirectory = paths.objectAtIndex(0)as NSString
let path = documentsDirectory.stringByAppendingPathComponent("FavouriteIndex.plist")
let fileManager = NSFileManager.defaultManager()
if(!fileManager.fileExistsAtPath(path))
{
let bundle = NSBundle.mainBundle().pathForResource("FavouriteIndex", ofType: "plist")
fileManager.copyItemAtPath(bundle!, toPath: path, error:nil)
}
myArray = NSMutableArray(contentsOfFile: path)!
println(myArray)
}
func writeToPlist(indexValue:Int) {
if let path = NSBundle.mainBundle().pathForResource("FavouriteIndex", ofType: "plist"){
myArray.addObject(indexValue)
myArray.addObject(indexValue+5)
myArray.addObject(indexValue+10)
myArray.addObject(indexValue+15)
myArray.writeToFile(path, atomically: true)
}
}
Цель этого кода, чтобы сохранить индекс tableViewCell, который был Добавлен в избранное, так что я могу отобразить эту строку в моем любимом tableViewControllwe
BTW - мой plist выглядит так ... Спасибо!
Спасибо @timgcarlson за ваш ответ, но 1 вопрос ,, В чем разница между загрузкой моего пакета и загрузкой документов из документального фильма? было бы достаточно, чтобы загрузить файл, let bundle = NSBundle.mainBundle(). PathForResource ("FavouriteIndex", ofType: "plist") ? – stringRay2014
Этот комплект - это то, что вы получаете от установленного приложения. Это каталог * только для чтения *, поэтому вы не можете изменять файлы, хранящиеся в комплекте, а также не добавлять какие-либо файлы в комплект. Каталог документов - * read-write * и обычно используется для хранения пользовательских данных для базовых приложений. Вот почему в вашей функции 'loadDataplist()' вы сначала проверяете, существует ли в каталоге Documents пакет PLSit, прежде чем копировать его из пакета в папку «Документы». – timgcarlson
Чтобы конкретно ответить на ваш вопрос, недостаточно просто получить пакет, если вы собираетесь писать в этот файл (который вы делаете). Вот документация по основам файловой системы iOS ... https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html – timgcarlson