Coredataのリレーション代入で「NSInvalidArgumentException」発生

  • 2015.01.31
  • iOS
NO IMAGE

Coredataの使用中に、リレーション(OneToMany)に値を代入すると、下記エラーが出る。

‘NSInvalidArgumentException’, reason: ‘*** -[NSSet intersectsSet:]: set argument is not an NSSet’

発生条件はよくわからないが、iOSのコードジェネレーターのバグっぽい。

[参考]NSInvalidArgumentException with NSOrderedSet using CoreData

上記サイトを元に、NSOrderedSetを追加する関数に対して、関数をオーバライド。

- (void)addStudents:(NSOrderedSet *)values;
{
    // ミュータブルなOrderedSetを作る
    NSMutableOrderedSet *mutableStudents = [[NSMutableOrderedSet alloc] initWithOrderedSet:self.students];
    [mutableStudents unionOrderedSet:values];
    self.students = mutableStudents;
}

動いた!