//對於數據的存儲: //當須要存儲的數據是自定義類的對象時,不論是放在NSArray或者NSDcitionary中,自定義類使用NSUserDefaults存儲時,都要 //繼承NSCoding協議 //SearchArticleModel.h文件 @interface SearchArticleModel : NSObject<NSCoding>{ @property (nonatomic, assign) NSInteger top; } //SearchArticleModel.m文件 @implementation SearchArticleModel - (id)initWithCoder:(NSCoder *)aDecoder{ self = [super init]; if (self) { self.top = [[aDecoder decodeObjectForKey:@"top"] integerValue]; } return self; } - (void)encodeWithCoder:(NSCoder *)aCoder{ [aCoder encodeObject:[NSString stringWithFormat:@"%ld",(long)self.top] forKey:@"top"]; } @end //歸檔和解檔的實現方法 //加載最新數據後歸檔 //articleArr中存儲數組 - (void)archiveObject{ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSMutableArray *articleArchiveArr = [[NSMutableArray alloc] init]; for (SearchArticleModel *recommendedAM in articleArr) { NSData *recommendedObj = [NSKeyedArchiver archivedDataWithRootObject:recommendedAM]; [articleArchiveArr addObject:recommendedObj]; } [defaults setObject:articleArchiveArr forKey:@"articleArr"]; [defaults synchronize]; } //加載界面後解檔 //數據放在articleArr數組中 - (void)unarchiveObject{ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSMutableArray *recommendArticleModelArr = [[NSMutableArray alloc] init]; for (NSData *data in [defaults objectForKey:@"articleArr"]) { SearchArticleModel *recommendArticleModel = [[SearchArticleModel alloc] init]; recommendArticleModel = [NSKeyedUnarchiver unarchiveObjectWithData:data]; [articleArr addObject:recommendArticleModel]; } } //附另外一種解決方案 http://www.crifan.com/store_save_array_of_custom_object_class_into_nsuserdefaults_in_iphone_ios/ http://www.crifan.com/nsuserdefaults_sometime_occasion_can_not_save_data_correctly/