[英]NSUserDefaults doesn't work
我是編程新手,我有一個問題。 我創建有兩個視圖的應用程序。 首先是tableviewcontroller,其次是視圖控制器。 從第二個視圖,我通過perepareForSegue方法將數據發送到我的tableview中。 我的數據(字符串)是NSMutableArray,我想在我的應用程序appDelegate.m中的didEnterBackgoung之后將這個MutableArray保存到UsedDefault中。然后,我想將其加載回去,但沒有任何反應。 我將代碼放在appDelegate.m的appDidBecomeActive中,並且已經嘗試在第一個視圖viewDidLoad中編寫它,但是沒有任何動作。 新應用啟動后,我的MuttableArray仍然為空。
這是我的代碼:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
NSUserDefaults*defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:self.flipsideView.zoznamFunkcii forKey:@"NSMutableArray"];
[defaults synchronize];
}
flipsideView是我的第一個視圖,而zoznamFunkcii是我的NSMuttable數組
這是我的加載方法:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSUserDefaults*defaults = [NSUserDefaults standardUserDefaults];
self.flipsideView.zoznamFunkcii = [NSMutableArray arrayWithArray:[defaults objectForKey:@"NSMutableArray"]];
}
有人可以幫我嗎? 我不知道為什么它不起作用。
您正在將一個空的NSMutableArray保存到NSUserDefaults。 因此,當然,加載的數組也將為空。
這是帶有注釋的保存代碼:
// overwrite zoznamFunkcii with empty array
self.flipsideView.zoznamFunkcii = [[NSMutableArray alloc]init];
NSUserDefaults*defaults = [NSUserDefaults standardUserDefaults];
// save this empty array to nsuserdefaults
[defaults setObject:self.flipsideView.zoznamFunkcii forKey:@"NSMutableArray"];
您的保存代碼可能應如下所示:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
NSUserDefaults*defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:self.flipsideView.zoznamFunkcii forKey:@"NSMutableArray"];
}
並且由於NSUserDefault不會保存可變對象,因此您的恢復代碼應如下所示:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSUserDefaults*defaults = [NSUserDefaults standardUserDefaults];
self.flipsideView.zoznamFunkcii = [NSMutableArray arrayWithArray:[defaults objectForKey:@"NSMutableArray"]];
}
如果數組中的對象不是NSData
, NSString
, NSNumber
, NSDate
, NSArray
或NSDictionary
實例,則必須首先對數組進行編碼。 有關如何執行此操作的詳細信息,請參見此問題 。
Here you can Save Object With NSUserDefault..
[[NSUserDefaults standardUserDefaults]setObject:[NSKeyedArchiver archivedDataWithRootObject:self.flipsideView.zoznamFunkcii] forKey:@"NSMutableArray"];
[[NSUserDefaults standardUserDefaults]synchronize];
and you make coder and decoder method
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super init]) {
self.toolResult = [decoder decodeObjectForKey:@"obj1"];
self.toolNotes = [decoder decodeObjectForKey:@"obj2"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:self.toolResult forKey:@"obj1"];
[encoder encodeObject:self.toolNotes forKey:@"obj2"];
}
your Data Save Into NsuserDefault When you Get Data From NsUserDefault then you Use like
[NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"NSMutableArray"]];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.