【发布时间】:2014-09-04 23:55:59
【问题描述】:
所以我有一个名为 model 的自定义 NSObject 类。我的问题是我有一个已经存档的自定义模型对象数组,因此它们可以在我的数组和 nsuserdefaults 中使用。我被困在如何取消归档它们。我的归档方法有效,因为我有一个单独的方法调用归档方法并将结果保存到 nsuserdefaults 中的数组中。我有一种方法可以很好地取消归档单个模型对象,但我需要知道如何取消归档数组中的每个归档对象。
存档方法:
- (void)writeFavoriteObject:(Model *)favorite
{
NSData *favoriteObject = [NSKeyedArchiver archivedDataWithRootObject:favorite];
[[NSUserDefaults standardUserDefaults] setObject:favoriteObject forKey:kNSUSERDEFAULTSCAR];
[[NSUserDefaults standardUserDefaults] synchronize];
}
解压方法:
- (Model *)readFavoriteObjectWithKey:(NSString *)key
{
NSData *favoriteobject = [[NSUserDefaults standardUserDefaults]objectForKey:key];
Model *favorite = [NSKeyedUnarchiver unarchiveObjectWithData:favoriteobject];
return favorite;
}
我尝试取消归档并使用我的数组:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"NewsCell";
CarViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
defaultsarray = [[NSMutableArray alloc]init];
defaultsarray = [defaults objectForKey:@"favoritesarray"];
FavoriteCar = [defaultsarray objectAtIndex:indexPath.row];
FavoriteCar = [self readFavoriteObjectWithKey:kNSUSERDEFAULTSCAR];
cell.CarName.text = FavoriteCar.CarModel;
cell.CarImage.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:FavoriteCar.CarImageURL relativeToURL:[NSURL URLWithString:@"http://pl0x.net/image.php"]]]];
//Accessory
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.layer.borderWidth=1.0f;
cell.layer.borderColor=[UIColor blackColor].CGColor;
cell.CarName.layer.borderWidth=1.0f;
cell.CarName.layer.borderColor=[UIColor whiteColor].CGColor;
return cell;
}
我的表格视图显示正确的行数,因为我可以获得准确的计数,但单元格只是重复第一个对象。一种可能的解决方案是某种方法,例如[FavoriteCar readFavoriteObjectWithKey:kNSUERDEFAULTSCAR];,因此每个对象都将被取消归档。任何帮助将不胜感激!
【问题讨论】:
-
在
cellForRowAtIndexPath中每次都取消归档是非常低效的 - 您应该使用viewDidLoad之类的方法取消归档。然后可以设置断点并检查数组中的数据
标签: ios objective-c arrays xcode nsobject