Я делаю игру, и когда я закрываю приложение (рядом с менеджером многозадачности), все мои данные ушли! Итак, мой вопрос очень прост: Как сохранить данные?Как сохранить данные в iOS
ответ
Предположим, вы хотите сохранить оценку и уровень, которые являются одновременно свойствами объекта, называемого dataHolder.
DataHolder может быть создан как синглтон, так что вам не придется беспокоиться слишком много о том, откуда вы к нему доступ (его sharedInstance
на самом деле):
Это код будет выглядеть как-нибудь так:
DataHolder.h
#import <Foundation/Foundation.h>
@interface DataHolder : NSObject
+ (DataHolder *)sharedInstance;
@property (assign) int level;
@property (assign) int score;
-(void) saveData;
-(void) loadData;
@end
DataHolder.m
NSString * const kLevel = @"kLevel";
NSString * const kScore = @"kScore";
@implementation DataHolder
- (id) init
{
self = [super init];
if (self)
{
_level = 0;
_score = 0;
}
return self;
}
+ (DataHolder *)sharedInstance
{
static MDataHolder *_sharedInstance = nil;
static dispatch_once_t onceSecurePredicate;
dispatch_once(&onceSecurePredicate,^
{
_sharedInstance = [[self alloc] init];
});
return _sharedInstance;
}
//in this example you are saving data to NSUserDefault's
//you could save it also to a file or to some more complex
//data structure: depends on what you need, really
-(void)saveData
{
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:self.score] forKey:kScore];
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:self.level] forKey:kLevel];
[[NSUserDefaults standardUserDefaults] synchronize];
}
-(void)loadData
{
if ([[NSUserDefaults standardUserDefaults] objectForKey:kScore])
{
self.score = [(NSNumber *)[[NSUserDefaults standardUserDefaults]
objectForKey:kScore] intValue];
self.level = [(NSNumber *)[[NSUserDefaults standardUserDefaults]
objectForKey:kLevel] intValue];
}
else
{
self.level = 0;
self.score = 0;
}
}
@end
Не забудьте указать #import "DataHolder.h", где это необходимо, или просто поместите его в ...-Prefix.pch
.
Вы могли бы выполнить фактическую загрузку и сохранение в appDelegate
методах:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[[DataHolder sharedInstance] saveData];
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[[DataHolder sharedInstance] loadData];
}
Вы можете получить доступ к вашему счету и уровня данных в любом месте с [DataHolder sharedInstance].score
и [DataHolder sharedInstance].level
.
Это может показаться излишним для простой задачи, но он уверен, помогает держать вещи аккуратно, и это может помочь вам избежать сохранения всех данных в appDelegate
(который, как правило, быстро & грязный путь к решению).
Вы можете сохранить данные в CoreData, SqlLite или NSUserDefaults Update Realm также вариант и очень легко реализовать.
Или простой плоский файл, возможно содержащий данные в представлении JSON или формате CSV. –
который безопасен? –
Если у вас есть что-то чувствительное, то не храните его в NSUserDefaults. Попробуйте сохранить в других, например Realm sql или core data, и используйте шифрование. если у вас мало таких вещей, как токен, имя пользователя и пароль, используйте keychain –
[NSUserDefaults standardUserDefaults]
подходит для небольших объемов данных, таких как пользовательские настройки и настройки. Как правило, вы используете это, чтобы пользователи могли сохранять различные биты данных, которые определяют глобальные значения, такие как характерные предпочтения, предпочтения в отношении оружия, что угодно и т. Д.
Для получения больших объемов данных, таких как сведения о уровне игры или достижениях или инвентаре оружия и т. Д. Вы захотите использовать что-то вроде Core Data. Это более формальная база данных, которая может быть легко перенесена по мере изменения вашей схемы данных. См. Документы здесь: Core Data и Core Data Programming Guide
Я рекомендую использовать Realm для более общих решений.
Swift 3
Использование UserDefaults
UserDefaults.standard.set(„some value”, „key”)
let value = UserDefaults.standard.string(„key”)
Вы можете даже сохраняться массив, используя этот
Есть несколько способов, чтобы сохранить данные в ИОС.
- UserDefaults - отличный способ сохранить небольшой объем данных.
- Брелок для ключей - безопасное место для безопасных высокочувствительных данных, таких как данные для входа и пароли.
- Sqlite базы данных - Если ваше приложение имеет огромное количество структурированных данных
- CoreData - на основе графа объектов, который описывает объекты, которые должны быть сохранены
- Сохранение файлов - Конечно, вы можете также непосредственно сохранить все типы файлов в файловую систему. Однако вы можете просто получить доступ к файловой системе в контейнере приложения из-за соображений безопасности.
- Использование базы данных Realm - лучшая альтернатива Core Data и SQLite db
- NSKeyedArchiver и NSKeyedUnarchiver - лучший способ для небольшого количества объектов. // я так думаю
- 1. IOS Как сохранить данные?
- 2. IOS Сохранить данные метки
- 3. Как сохранить данные в приложении iOS
- 4. Как сохранить данные UIImageView в iOS
- 5. Как сохранить текстовые данные в приложении iOS?
- 6. Как сохранить данные между экранами приложения iOS?
- 7. Как сохранить данные приложения iOS на устройствах
- 8. IOS-Как сохранить данные с помощью mysql?
- 9. Лучший способ сохранить данные в iOS?
- 10. Как сохранить данные игры
- 11. сохранить IOS Основные данные контекста ошибки
- 12. Сохранить данные в txt
- 13. Как сохранить данные GPS с сделанной фотографией в ios
- 14. iOS - Как сохранить данные о покупке в приложении?
- 15. IOS: как сохранить мои данные в первом представлении
- 16. Как сохранить данные из запроса в массиве строк, Firebase iOS?
- 17. Как сохранить пользовательские данные и получить его обратно в ios?
- 18. Как сохранить данные для входа в приложение iOS
- 19. Как сохранить данные из синтаксического анализа в NSArray iOS
- 20. iOS: Основные данные - мне нужно сохранить изменения?
- 21. xamarin studio, ios, сохранить данные между запусками
- 22. Основные данные сохранить модель не работает IOS
- 23. Сохранить как локальный файл или как двоичные данные IOS
- 24. Как сохранить розетку в ios?
- 25. Как сохранить метаданные EXIF в iOS?
- 26. Как сохранить глобальные переменные в iOS-разработке?
- 27. ios как сохранить данные для приложения после обновления из магазина
- 28. Как сохранить сервер неправдоподобно данные расширения IOS уточненный
- 29. iOS Как получить и сохранить данные из URL?
- 30. Как сохранить данные с задержкой?
Какой тип данных вы пытаетесь сохранить и сколько? –