2011-09-27 16 views
8

NSUserDefault ile bir dizi saklamak istiyorum, o zaman applicationDidEnterBackgroundIOS: NSUserDefault ile bir dizi depolayın

[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"]; 

ve application didFinishLaunchingWithOption

myArray= [[NSMutableArray alloc] 
      initWithArray:[[NSUserDefaults standardUserDefaults] 
      objectForKey:@"myArray"]]; 

'e ekledim, multitasking cihazı için değil, multitasking cihazı için nasıl çözebilirim ?

cevap

10

Mağaza zaten -applicationDidEnterBackground: çağırma tarafından kaydedilmedi eğer -applicationWillTerminate: yılında NSUserDefaults nesne, (çoklu görev destekleniyorsa yani öyle eğer zaten kaydedildi çünkü, ardından kaydedin yok, kontrol edin.)

- (void) applicationWillTerminate:(UIApplication *) app { 
    if([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] && 
     ![[UIDevice currentDevice] isMultitaskingSupported]) { 
     [[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"]; 
    } 
} 
+0

Başka bir yanıtta da belirtildiği gibi, nesneyi ayarladıktan sonra varsayılanları senkronize etmeniz gerekir. [[NSUserDefaults standardUserDefaults] senkronize]; – user3246173

0

kaydet NSUserDefaults

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

de

[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"]; 
set
applicationWillTerminate 
3

önceki cevapları

yılında

hepsi doğru, ama applicationDidEnterBackground ne de applicationWillTerminate ne tüm durumlarda çağrılacak garantili unutmayın. Değiştiğinde önemli verileri saklamak genellikle daha iyidir.

7

arka girmeden önce tampon senkronize etmeyi unutmayın :

[[NSUserDefaults standardUserDefaults] synchronize]; 
0

ve kaydetmek çalıştığınız nesnenin içine encodeWithCoder ve initWithCoder kullanmayı unutmayın ve bu dizide bulunan

İlgili konular