2010-08-02 55 views
0

我想在保存NSUserDefaults的視圖控制器的陣列,但我不知道如何:如何將數組保存到NSUserDefaults?

[[NSUserDefaults standardUserDefaults] setObject:tabBarController.viewControllers forKey:@"tabOrder"]; 

當我看了上面的線,我tabBarController.viewControllers是空白。

+0

重複此:http://stackoverflow.com/questions/3389593/saving-uitabbarcontroller-view-controllers-to-nsuserdefaults-doesnt-work 請不要問在兩個不同的問題相同的問題。 – jer 2010-08-02 16:26:48

回答

2

該數組中的視圖控制器不可序列化,因此不會保存到NSUserDefaults

NSUserDefaults reference

值參數可以是唯一屬性列表對象:NSData的,的NSString,的NSNumber,NSDate的,NSArray中,或NSDictionary的。對於NSArray和NSDictionary對象,其內容必須是屬性列表對象。請參閱「屬性列表編程指南」中的「什麼是屬性列表?」。

您應該在下一次加載時重新初始化您的視圖控制器。然而,你可以將他們的數據序列化到NSUserDefaults到一些自定義字段。

0

ERE可以保存的對象與NSUserDefault ..

[NSUserDefaults的standardUserDefaults]的setObject:[的NSKeyedArchiver archivedDataWithRootObject:self.flipsideView.zoznamFunkcii] forKey:@ 「的NSMutableArray」]; [[NSUserDefaults standardUserDefaults] synchronize];

和你使編碼器和解碼器方法

  • (ID)的initWithCoder:(NSCoder *)譯碼器{ 如果(個體= [超級INIT]){ self.toolResult = [解碼器decodeObjectForKey:@ 「OBJ1」]; self.toolNotes = [decoder decodeObjectForKey:@「obj2」];

    } return self; }

  • (無效)encodeWithCoder:(NSCoder *)編碼器{ [編碼器encodeObject:self.toolResult forKey:@ 「OBJ1」]; [編碼器encodeObject:self.toolNotes forKey:@「obj2」];

}

您的數據保存到NsuserDefault當你獲取數據從NsUserDefault那麼你可以使用類似 [NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults的standardUserDefaults] objectForKey:@ 「的NSMutableArray」]];

相關問題