我有關於如何/在那裏我可以救我NSUserDefaults
爲applicationDidEnterBackground
和applicationWillTerminate
,我需要在用戶退出應用程序從另一個UIViewController
救我NSArray
計數NSUserDefaults
或者進入後臺的一個問題。但我不知道我是否會保存正確的integer
,因爲我在UIView
上刪除了NSArray
計數。 我不能將它保存在viewDidLoad
和viewDidAppear
。希望有人會幫助。謝謝。節省NSUserDefaults的
回答
如果你需要從另一個ViewController保存,那麼它最好在你的AppDelegate中添加NSMutableArray
。每當您刪除或添加對象,然後保存陣列的數量,因爲它會覆蓋這樣的:
[[NSUserDefaults standardUserDefaults] setInteger:[yourArray count] forKey:@"Count"];
[[NSUserDefaults standardUserDefaults] synchronize];
檢索像這樣:
NSInteger count = [[NSUserDefaults standardUserDefaults] integerForKey:@"Count"];
編輯:synchronize
:寫入任何修改持久域到磁盤並將所有未修改的持久域更新爲磁盤上的內容。
參考NSUserDefaults_Class如明確規定被稱爲perodically,我們不必等待他們的呼叫
它的更新是在數組上添加和刪除數組。我會把保存在每個部分的NSUserDefaults中? – Bazinga
當然不要每次都調用同步。你可能根本不需要調用同步,但在內存壓力下死亡可能會讓iOS變得更加棘手。 –
@Catfish_Man請參閱[NSUserDefaults_Class(https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html),因爲它明確規定被perodically我們叫不必等待他們的電話 –
在你的AppDelegate類即創建NSMutableArray的伊娃的屬性創建所需的NSMutableArray,那麼以後就可以更新,添加,刪除其內容在任何classes.Thus的你將得到的陣列在的appDelegate功能本身和數組數應該是準確的applicationDidEnterBackground和applicationWillTerminate通知功能算..
在yourAppDelegate.h
創建..
@interface yourAppDelegate : UIResponder <UIApplicationDelegate>{
NSMutableArray *myArray;
}
@property(nonatomic,strong)NSMutableArray *myArray; //replace strong by retain if ios <5
在yourAppDelegate.m
@synthesize myArray的;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *
)launchOptions{
self.myArray = [NSMutableArray array];
}
進一步在appDelegate.m您需要的功能文件
- (void)applicationWillTerminate:(UIApplication *)application
{
[[NSUserDefaults standardDefaults]setValue:[NSNumber numberWithInt:[self.myArray count] forKey:@"myOwnKey"]];
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
的情況下,如果你想將對象添加到這個陣列中的任何其它類只需要創建yourAppDelegate的委託。
例如,在A級viewDidLoad中,
-(void)viewDidLoad{ // assuming viewController A
YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplicatio sharedApplication]delegate];
[appDelegate.myArray addObject:@"1232"];
}
您可以使用此代碼值保存到NSUserDefaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:yourArray forKey:@"YourKey"]
[defaults synchronize];
的具體使用NSUserDefault檢查這個
[[NSUserDefaults standardUserDefaults] setBool:<#(BOOL)#> forKey:<#(NSString *)#>]
,這是布爾你一個添加setInt/setFloat/SetDouble etc
甚至ObjectiveCobjects
與setValue/setObject
。[[NSUserDefaults standardUserDefaults] setValue:<#(id)#> forKey:<#(NSString *)#>]; [[NSUserDefaults standardUserDefaults] setObject:<#(id)#> forKey:<#(NSString *)#>];
若要檢索您可以使用
getters
像boolForKey
([[NSUserDefaults standardUserDefaults] boolForKey:<#(NSString *)#>]
)intForKey etc.
值。使用
removeObjectForKey
刪除對象。
- 1. NSUserDefaults的一致節省
- 2. 的NSKeyedArchiver/NSUserDefaults的 - 節省的CGRect
- 3. 用的NSKeyedArchiver,以節省NSUserDefaults的不工作......
- 4. NSUserDefaults的使用,以節省擊鍵從一個UITextView酥料餅
- 5. NSUserDefaults的節能
- 6. 用NSUserDefaults節省分數:UInt8不能轉換爲Int8
- 7. MVC的ViewModels節省
- 8. 節省iphone
- 9. 節省骨幹
- 10. phpImageWorkshop:節省
- 11. 節省PHP
- 12. 節省資源
- 13. 在每列節省模式,節省的進度值
- 14. 坑上的NSManagedObjectContext的節省:
- 15. 的Python節省Tkinter的
- 16. date_select節省可用
- 17. 如何節省軌
- 18. 節省高分Android
- 19. 如何節省caffe.io.load_image
- 20. 異常節省JSON
- 21. 獲取PasswordCredential節省
- 22. Overiding節省在Django
- 23. Mongoid節省對象
- 24. 節省Pixastic圖像
- 25. Yii2節省模式
- 26. 節省$ _ POST到$ _SESSION
- 27. R節省編碼
- 28. 如何節省iPhone
- 29. Drupal的7個網站,節省節點
- 30. C#字的Interop AccessViolationException節省
是否使用多個線程比? – TheAmateurProgrammer
@theAmateurProgrammer no。 – Bazinga