在IOS中合并两个类对象

时间:2013-03-20 06:54:59

标签: iphone ios objective-c

我正在尝试合并两个类对象,如下所示

Class College{ 
      name,
      collegeName,
      students(Array)
}

我为这个名为 objCollegeA objCollegeB 的类创建了两个对象。

如果我为这些对象分配以下值

objCollegeA.name = @"name1"
objCollegeA.collegeName = @"collegeName2"
objCollegeA.students = [NSArray arrayWithObjects:@"test1",@"test2",nil];

并且对于第二个对象,我正在分配以下值

objCollegeB.name = @"name1"
objCollegeB.collegeName = @"collegeName2"
objCollegeB.students = nil;//Here this array is nil

现在我需要合并这两个对象,如下所示

objCollegeA + objCollegeB => objCollegeA with Values {@"name1",@"collegeName2", [NSArray arrayWithObjects:@"test1",@"test2",nil];}

这意味着我需要合并两个对象并将nil值替换为第二个对象中的值并返回。在目标C中有没有办法做到这一点?

提前感谢您的回复。

3 个答案:

答案 0 :(得分:0)

你是否总是将大学A的nil属性设置为大学B的属性并且将非零属性与大学A中的属性相同?如果是这样,你可以这样做:

-(College)addCollege:(College *)collegeB {
    if (!self.name) self.name = collegeB.name;
    if (!self.collegeName) self.collegeName = collegeB.collegeName;
    if (!self.students) self.students = collegeB.students;
}

然后你可以打电话:

[collegeA addCollege:collegeB];

请注意,这会将它们设置为相同的对象而不是复制对象。

答案 1 :(得分:0)

只需在College

中创建添加方法即可
- (void)add:(College*)obj
{
    if(name == nil)
    {
        name = obj.name;
    }
    if(collegeName == nil)
    {
        collegeName = obj.collegeName;
    }
    if(students == nil && obj.students != nil)
    {
        students = [NSArray arrayWithArray:obj.students];
    }
}

答案 2 :(得分:0)

如果我理解你的问题,那么首先你需要修改这个陈述:

objCollegeA.students = [NSMutableArray arrayWithObjects:@"test1",@"test2",nil];

然后[objCollegeA.students addObjectsFromArray:objCollegeB.students];

如果您需要使用objCollegeB.name更改objCollegeA.name,请执行以下操作:

objCollegeA.name = objCollegeB.name;

objCollegeA.collegeName = objCollegeB.collegeName;