iOS - Могу ли я изменить файл списка свойств в реальном времени на iPhone? - PullRequest
2 голосов
/ 10 апреля 2011

У меня есть файл списка свойств, который попадает в комплект при сборке моей программы.Теперь я хотел бы изменить его на моем Mac и обновлять его во время работы моей программы.Я предполагаю, что пакетирование файла не является правильным подходом, так как у меня, кажется, нет никакого доступа к содержимому пакета после того, как он был собран.

Как мне подходить?Было бы неплохо по крайней мере работать с симулятором iPhone, но было бы очень приятно работать и с устройством.

Ответы [ 2 ]

5 голосов
/ 10 апреля 2011

Ваш комплект приложений подписан, поэтому его нельзя изменить после того, как он был создан / подписан.Чтобы изменить plist, вам необходимо сначала скопировать его в каталог Documents для вашего приложения.Затем вы можете изменить копию.Вот метод, который у меня есть в одном из моих приложений, который копирует файл с именем FavoriteUsers.plist из пакета в каталог документов во время запуска приложения.

    /* Copies the FavoritesUsers.plist file to the Documents directory
     * if the file hasn't already been copied there
     */
    + (void)moveFavoritesToDocumentsDir
    {
        /* get the path to save the favorites */
        NSString *favoritesPath = [self favoritesPath];

        /* check to see if there is already a file saved at the favoritesPath
         * if not, copy the default FavoriteUsers.plist to the favoritesPath
         */
        NSFileManager *fileManager = [NSFileManager defaultManager];
        if(![fileManager fileExistsAtPath:favoritesPath])
        {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"FavoriteUsers" ofType:@"plist"];
        NSArray *favoriteUsersArray = [NSArray arrayWithContentsOfFile:path];
        [favoriteUsersArray writeToFile:favoritesPath atomically:YES];
        }
    }

    /* Returns the string representation of the path to
     * the FavoriteUsers.plist file
     */
    + (NSString *)favoritesPath
    {
        /* get the path for the Documents directory */
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsPath = [paths objectAtIndex:0];

        /* append the path component for the FavoriteUsers.plist */
        NSString *favoritesPath = [documentsPath stringByAppendingPathComponent:@"FavoriteUsers.plist"];
        return favoritesPath;
    }
1 голос
/ 10 апреля 2011

Вроде.У вас есть доступ только для чтения к пакету, поэтому вам нужно скопировать список из вашего пакета в папку документов вашего приложения.

Папка с документами - это область песочницы вашего приложения, где вы можете прочитатьи писать в файлы.Так что, если вы скопируете этот лист там при самом первом запуске вашего приложения, вы сможете редактировать и модифицировать его в соответствии с вашими пожеланиями.

Существует учебник, который кто-то написал онлайн, который в основном отвечает на ваш точный вопрос,так что вместо того, чтобы пытаться сделать мое собственное объяснение, вот гораздо лучшее!

http://iphonebyradix.blogspot.com/2011/03/read-and-write-data-from-plist-file.html

...