iOS - 核心数据 - 保存包含对象数组的对象

时间:2015-08-16 18:27:46

标签: ios objective-c core-data magicalrecord

我刚刚开始使用Core数据,(我也尝试使用Magical Record)。我正在创建一个非常简单的付款跟踪应用。

我想保存一个包含Debtors数组的Payment对象。这是我的Payment对象的样子

@class Debtor;

@interface Payment : NSObject
@property (strong, nonatomic) NSString *paymentAmountString;
@property (strong, nonatomic) NSString *titleString;
@property (strong, nonatomic) NSArray *debtorsArray;
@property (strong, nonatomic) NSDate *dueDate;
@property (strong, nonatomic) NSString *notesString;
@end

debtorsArray是Debtor对象的数组

@interface Debtor : NSObject
@property (strong, nonatomic) NSString *nameString;
@property (strong, nonatomic) NSString *amountOwedString;

如何保存此对象,因为它包含一个数组。我是否需要创建两个不同的实体,支付与债务人之间的关系?我该怎么做,以及如何确保它们被正确取出?

1 个答案:

答案 0 :(得分:1)

仅为Payment创建一个实体。您必须使用' 可转换'此实体中属性debtorsArray的数据类型。

然后在Debtor类中实现以下方法:

- (void)encodeWithCoder:(NSCoder *)aCoder{
    [aCoder encodeObject:self.nameString forKey:@"nameString"];
    [aCoder encodeObject:self.amountOwnedString forKey:@"amountOwnedString"];
}

-(id)initWithCoder:(NSCoder *)aDecoder{
    if(self = [super init]){
        self.nameString = [aDecoder decodeObjectForKey:@"nameString"];
        self.amountOwnedString = [aDecoder decodeObjectForKey:@"amountOwnedString"];
    }
    return self;
}

实体应该像任何其他获取查询一样正常获取。

希望这有帮助。