0

次のような2つのクラスオブジェクトをマージしようとしています

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

このクラスにobjCollegeAobjCollegeBという名前の 2 つのオブジェクトを作成しています。

これらのオブジェクトに次の値を割り当てている場合

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

2番目のオブジェクトには、次の値を割り当てています

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

次のように、これら 2 つのオブジェクトをマージする必要があります。

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

つまり、2 つのオブジェクトをマージし、nil 値を 2 番目のオブジェクトの値に置き換えて返す必要があります。Objective Cでこれを行う方法はありますか?

お返事ありがとうございます。

4

3 に答える 3

0

常にcollegeAのnil属性をcollegeBの属性に設定し、non-nilをcollegeAと同じままにしておくつもりですか? もしそうなら、あなたはただ行うことができます:

-(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];

これは、オブジェクトをコピーするのではなく、同じオブジェクトに設定することに注意してください。

于 2013-03-20T07:01:15.560 に答える
0

Collegeクラスで add メソッドを作成するだけです

- (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];
    }
}
于 2013-03-20T07:01:40.873 に答える
0

あなたの質問を理解したら、まずこのステートメントを変更する必要があります。

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

それで[objCollegeA.students addObjectsFromArray:objCollegeB.students];

objCollegeA.name を objCollegeB.name に変更する必要がある場合は、次のようにします。

objCollegeA.name = objCollegeB.name;

objCollegeA.collegeName = objCollegeB.collegeName;

于 2013-03-20T07:49:31.413 に答える