【问题标题】:How to save to and read from a NSObject如何保存和读取 NSObject
【发布时间】:2013-06-21 21:48:34
【问题描述】:

我有两个 NSObject。

@interface Car : NSObject{
     @property (strong) NSSet *cars;
}

@interface Model : NSObject{
     @property (strong) UIImage *picture;
     @property (strong) NSString *name;
}

基本上,对象 Car 有一个 NSSet cars,并且 NSSet cars 的每个对象都有属性图片和名称。

如何关联这两个 NSObject 以及如何使用 Model NSObject 的属性将字符串或图像保存到 Car NSSet。谢谢。

【问题讨论】:

    标签: ios nsstring uiimage nsobject nsset


    【解决方案1】:

    为了方便添加或删除,您的“cars”属性应声明为NSMutableSet

    假设您的单个 Car 对象被命名为“listOfCars”,这是一种方法来做(我认为)您正在尝试做的事情:

    Model * newModel = [[Model alloc] init];
    if(newModel)
    {
        newModel.picture = [UIImage imageNamed: @"Edsel.jpg"];
        newModel.name = @"Ugly Car";
    
        [listOfCars.cars addObject: newModel];
    }
    

    并且,在您的 Car .m 文件中,执行以下操作:

    - (id) init
    {
        self = [super init];
        if(self)
        {
            _cars = [[NSMutableSet alloc] init];
        }
        return(self);
    }
    

    init 方法是唯一您应该引用“cars”属性的基础变量的地方。如果您指的是从 Car 对象中设置的汽车,则在其他任何地方都应该是“listOfCars.cars”或“self.cars”。

    【讨论】:

    • 啊哈其实是一辆丑车!我认为这可行,但我似乎无法查看 listOfCars.cars 的内容,只是为了确保它给了我空值。我正在尝试NSLog(@"%@", listOfCars.cars);
    • 对,“cars”集需要分配。我已经修改了我的代码。
    • 我已经做了 mutableSet 的分配。它仍然给我空值。如果我这样做 NSLog(@"%@", newModel.name) 它会给我正确的字符串以便保存。但是listOfCars.cars 给了我空值。也许我必须做一个不同的 NSLog 来查看对象。
    • 如何在代码中声明“listOfCars”汽车对象?
    • 我正在使用self.cars = [[NSMutableSet alloc] init]; 我正在尝试NSLog(@"%@", self.cars);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    相关资源
    最近更新 更多