Я создаю приложение с хранилищем данных в plist. Теперь, какими способами я могу обновлять данные? Может быть, если я создам веб-страницу и извлечу из нее свои данные вместо сохранения в plist? Или я могу обновить свои данные, когда подключаюсь к iTunes? Или любое другое предложение? То, что я хочу достичь, - это способ обновления моих данных, как только пользователь загрузит приложение.Как обновить данные в приложении для iPhone
ответ
Плиты нелегко модифицировать, так как вы должны прочитать их обратно в память, внести изменения и записать их обратно в файл.
Для написания рисунков посмотрите на метод NSDictionary или NSArray's writeToFile:atomically:
. Помните, что ваш plist - это в основном XML, составленный из NSArrays, NSDictionaries, NSStrings и NSData, и вы всегда захотите записать корневой узел.
Альтернативно вы можете искать другие способы хранения ваших данных: пользовательские настройки по умолчанию или базы данных sqlite. Хранение данных в облаке имеет смысл только в некоторых случаях, например, если вы хотите поделиться им между различными устройствами или хотите обновить его удаленно. Лучше избегать его, если это возможно.
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dir = [path objectAtIndex:0];
NSString *filePath = [dir stringByAppendingPathComponent:@"my.plist"];
NSMutableDictionary *localDictionary;
NSUrl *remoteUrl = [NSURL URLWithString:@"http://server.com/my.plist"];
NSMutableDictionary *remoteDictionary = [NSMutableDictionary dictionaryWithContentsOfURL:remoteUrl];
if(remoteDictionary != nil) {
[remoteDictionary writeToFile:filePath atomically:YES];
localDictionary = remoteDictionary;
}
else {
localDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:filePath];
if(localDictionary == nil) localDictionary = [NSMutableDictionary dictionary];
}
Это будет пытаться получить копию my.plist
из http://server.com/
, в случае успеха он будет записать его на диск и точку localDictionary
к нему, по ошибке, он будет пытаться читать с диска (например, загруженных ранее, когда было соединение), если на диске нет файла, он создаст пустой NSMutableDictionary
. В любом случае localDictionary
укажет на NSMutableDictionary
в конце.
Это очень просто и будет запрашивать файл при каждом запуске кода. Вы можете, например, используйте NSFileModificationDate
(полученные NSFileManger attributesOfItemAtPath:error:
) и NSDate
, чтобы определить, требуется ли обновление. Или для больших версий файлов имеет смысл также иметь небольшой файл, содержащий версию большего файла - получение небольшого файла с сервера (например, с помощью NSString
), проверяя, содержит ли файл кешированной версии более низкий номер версии, если это так получить большой файл. Это всегда зависит от того, как часто обновляется контент.
Посмотреть полную документацию: NSDictionary, NSString, NSFileManager, NSDate
Привет, my.plist является файлом веб-страницы или? Извините, я до сих пор не знаком с этим. Является ли сервер бесплатным для использования сервиса? Спасибо за помощь – Stefan
my.plist - это всего лишь файл plist (см. Http://en.wikipedia.org/wiki/Property_list), который очень удобно использовать для небольших объемов данных, поскольку вы можете сериализовать и записать его в файл с помощью только одна команда и обратный процесс в одной команде. Сервер - это то, что вам нужно, чтобы получить свое «я», обычно вам нужен домен (возможно, 2 поддомена, которые могут быть перенаправлены на другой сервер, если один идет вниз). Вместо веб-сервера (http) вы также можете использовать FTP-сервер. Если вам нужна помощь в этом, вы должны спросить где-то еще, поскольку хостинг - это не программирование. – Thomas
- 1. Как обновить мою базу данных в приложении для iPhone?
- 2. Обновить данные в приложении для магазина Windows
- 3. iphone обновить некоторые файлы в приложении
- 4. Как хранить данные в приложении iPhone
- 5. Как обновить UIWebview для iPhone?
- 6. как обновить данные из Интернета в exisitng файл для Iphone
- 7. Как обновить данные в UITableView?
- 8. Как профессионалы получают данные в приложении для iPhone? (база данных)
- 9. Как получить данные для UITableViewController в приложении iphone
- 10. Как обновить токен доступа Facebook автоматически в приложении для iPhone и приложении для Android?
- 11. xml данные в UITableview в приложении iPhone
- 12. как обновить информацию в приложении для Android.
- 13. Как обновить новостной канал в приложении iPhone без обновления приложения?
- 14. Как обновить приложение для iPhone
- 15. Как использовать Superfeedr в приложении для iPhone?
- 16. Получить данные Wordpress для использования в приложении для iPhone
- 17. Когда сохранять данные в приложении iPhone?
- 18. Где хранить загруженные данные в приложении iPhone?
- 19. Как обновить UITableView в iphone?
- 20. Обновить данные в приложении для магазина Windows (шаблон MVVM)
- 21. Как обновить данные в полночь в приложении MVC?
- 22. Настройки.Bundle в приложении для iPhone
- 23. Опубликовать данные для службы WCF в приложении iPhone?
- 24. Как просмотреть данные в файле sqlite, запущенном в приложении iphone?
- 25. Как использовать isAnimating в приложении для iPhone
- 26. Как увеличить изображение в приложении для iPhone?
- 27. Как переписать текст в приложении для iPhone
- 28. Как показать рекламу в приложении для iPhone
- 29. Как обмениваться фотографиями в приложении для iPhone?
- 30. Как подчеркнуть текст в приложении для iPhone
Это лучше всего делать это хорошо, и не избежать. Например. обновлять данные, когда есть соединение и обновление, а также кэшировать его локально. Сохраните версию данных или дату обновления в plist с помощью 'NSMutableDictionary'. – Thomas
Привет, я бы обновил его удаленно. Может быть, что-то вроде, я могу отправить предупреждение, сообщающее пользователю, что обновление доступно и т. Д. Или как приложение YouTube, как он хранит/извлекает все данные? – Stefan
Привет, Томас, как я могу достичь метода, который вы предлагаете? – Stefan