所以我有一個名爲model的自定義NSObject類。我的問題是,我有一個已經存檔的自定義模型對象的數組,因此可以在我的數組和nsuserdefaults中使用它們。我被卡在如何解除他們。我的存檔方法工作,因爲我有一個單獨的方法調用存檔方法,並將結果保存到nsuserdefaults中的數組。我有一個方法可以正常工作來解壓各個模型對象,但我需要知道如何取消存檔數組中的每個存檔對象。Objective C unarchive自定義nsobjects數組
歸檔方法:
- (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;
}
我的tableview顯示正確的行數,因爲我可以得到準確的計數,但單元格只是重複第一個對象。一個可能的解決方案將是某種方法,如[FavoriteCar readFavoriteObjectWithKey:kNSUERDEFAULTSCAR];
,因此每個對象將被取消存檔。任何幫助,將不勝感激!
在'cellForRowAtIndexPath'中每次取消歸檔都是非常低效的 - 你應該像'viewDidLoad'這樣的方法解壓縮。然後你可以設置一個斷點並檢查數組中的數據 – Paulw11 2014-09-05 00:19:15
謝謝。好主意 – Chris 2014-09-05 00:49:27