ios - 用于保存一些实例的数组或字典?

标签 ios xcode nsarray nsdictionary

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.carMakes = [[NSArray alloc]
                     initWithObjects:@"Chevy",
                     @"BMW",
                     @"Toyota",
                     @"Volvo",
                     @"Smart", nil];

    self.carModels = [[NSArray alloc]
                      initWithObjects:@"Volt",
                      @"Mini",
                      @"Venza",
                      @"S60",
                      @"Fortwo", nil];

    self.carImages = [[NSArray alloc]
          initWithObjects:@"chevy_volt.jpg",
                      @"mini_clubman.jpg",
                      @"toyota_venza.jpg",
                      @"volvo_s60.jpg",
                      @"smart_fortwo.jpg", nil];
}

上面的代码填充在表格 View 中。我想让用户选择一些汽车,这样汽车的名称、型号和图片将保存在另一个列表中。我不知道应该在哪里保存用户选择的数据以及如何保存。
我希望稍后能够在 TableView 上显示用户选择的汽车列表。
  • 我知道如果我想保留新创建的列表,我需要将所选信息转换为 plist 文件或类似文件,但我不确定在此之前将数据保存在哪里。
  • 最佳答案

    您可以为此使用数组或字典。但更好的方法是创建一个模型类数组来保存这些数据。这最适合 MVC architecture .例如,您可以将模型类创建为 Car有属性,NSString *make , NSString *modelUIImage *image在其中声明。如果要填充表格 View ,则需要创建这些汽车模型对象的数组,并在委托(delegate)方法中使用它来填充单元格。如果要持久化数据,可以将其转换为字典形式,然后将其存储为 plist。更多详情,请查看 tutorial from ray wenderlich

    一个典型的模型对象看起来像,

    @interface Car : NSObject {}
    @property (nonatomic, retain) NSString *make; 
    @property (nonatomic, retain) NSString *model;
    @property (nonatomic, retain) UIImage *image;
    @end
    

    创建模型对象数组,
    Car *carObject = [[Car alloc] init];
    carObject.make = @"Chevy";
    //set other properties and create more objects
    NSMutableArray *carList = [[NSMutableArray alloc] init];
    [carList addObject:carObject]; //you can do this in a loop
    

    显示时您可以使用 [carList objectAtIndex:indexPath.row].make ETC..

    或者
    Car *myCar = [carList objectAtIndex:indexPath.row];
    cell.textLabel.text = myCar.model;
    

    当用户选择一些汽车时,将这些模型对象保存到一个单独的数组中并保存为 plist。

    关于ios - 用于保存一些实例的数组或字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13691571/

    相关文章:

    ios - 序列化包含未实现 NSCoding 的类的 NSMutableArray

    ios - 如何使用 NSArray 按字母顺序对 NSDictionary 中的值进行排序?

    ios - 应用内购买不起作用

    ios - 架构 arm64 (iOS) 的 undefined symbol

    ios - UIPageViewController 页面控件太靠近 iPhone X iOS 11 上的主页栏

    ios - 使用 CMake 将 .frameworks 复制到 iOS 应用程序包

    ios - 上传高分 - 如何让它只对 friend 可见?

    ios - 根据 objective-c 中内部数组的总和对多维数组进行排序

    ios - 如何在 osX 上访问 USB 驱动程序、USBMap 和监听 USB 端口?

    ios - 在多个 UITextField 的数字键盘上显示完成按钮