Вопрос

Мне нужно сохранить nsmutabledashionary в nsuserdefaults.Я искал в Интернете для многих примеров, но не получил ни одного, которые имеют отношение достаточно.Может кто-нибудь опубликовать небольшой кусок кода, который сэкономит NSMutabledashionAry в NsuserDefaults при выключении и извлечь его при запуске приложения?Также не могли бы вы сказать мне, где разместить код.

У меня есть какой-то код, но он не работает.

appdelegate.h - поиск данных

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    // Override point for customization after application launch.

      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
      NSData *dat = [defaults objectForKey:@"theKey"];
      tmpArray  = [[NSMutableArray alloc] init];
      tmpArray = [NSKeyedUnarchiver unarchiveObjectWithData:dat];

      [self.window makeKeyAndVisible];
      [window addSubview:tabBarController.view];
      return YES;
}
.

appdelegate.h - хранение данных

- (void)applicationWillTerminate:(UIApplication *)application {

      [self saveContext];
      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
      NSData *dat = [NSKeyedArchiver archivedDataWithRootObject:tmpArray];
      [defaults setObject:dat forKey:@"theKey"];
}
.

Да, это для массива, но мне понадобится один для nsmutabledashionAry.

Это было полезно?

Решение

Обсуждение ApplicationWILLEMINT:

Для приложений, которые не поддерживают выполнение фона или связаны с iOS 3.x или ранее, этот метод всегда вызывается, когда пользователь выходит из приложения. Для приложений, которые поддерживают выполнение фона, этот метод, как правило, не вызывается, когда пользователь выходит из приложения, потому что приложение просто перемещается на фоновом случае в этом случае. однако этот метод может быть вызван в ситуациях, когда приложение работает на заднем плане (не приостановлено), и система должна превышать ее по какой-то причине.

Чтобы сохранить свой объект, вы должны поместить свой код в ApplicationDidenterBackgroundground: тоже.

в iOS 4.0, а позже этот метод вызывается вместо applicationwillterminate: метод, когда пользователь выходит из приложения, который поддерживает выполнение фона. Вы должны использовать этот метод для выпуска общих ресурсов, сохраняют пользовательские данные, недействительные таймеры и хранить достаточно информации о состоянии приложения, чтобы восстановить ваше приложение в текущее состояние в случае, если оно прекращено позже. Вы должны также отключить обновления для вашего приложения Пользовательский интерфейс и избегайте использования некоторых типов ресурсов общих системных систем (например, база данных контактов пользователя). Это также обязательно, чтобы вы избегаете использовать OpenGL es на заднем плане.


Чтобы сохранить словарь вместо массива просто заменить все вхождения массива с словарем


и исправить утечку

tmpArray  = [[NSMutableArray alloc] init]; // not used, not released but `alloc`ed.
tmpArray = [NSKeyedUnarchiver unarchiveObjectWithData:dat];
.

, удалив первую строку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top