開発ブログ - swift coredata メソッド名に注意!

swift coredata メソッド名に注意!

カテゴリ : 
技術メモ » swift
執筆 : 
2017/8/22
長いこと原因が分からなかったトラブルが
ようやくわかった!!!

swift で CoreData を使っていた
元々は ObjectiveC で書かれていたものを swift に書き直していたのだが
なぜか CoreData で relationship しているプロパティに代入をする部分で

NSInvalidArgumentException reason: [NSSet intersectsSet:]: set argument is not an NSSet

というエラーが発生していたのだった

原因は、自分で作成したメソッド名にあった
プロパティが members だとして
members にアクセスすると [Member]として取得できないので
func getMembers() -> [Member]
というメソッドを作成して、それを使っていたのだった
どうも、swift では getXxxxx というアクセッサが生成されているのか、
members にアクセスしたときに、getMembers() が呼ばれてしまい
そのために members が NSSet としてアクセスできなくなったためのようだ

という訳で、プロパティ名に get なんちゃら というようなメソッドを
無意識に使ってしまうのは、とても危険ということ
ちなみに、メソッド名を考えるのが面倒だったので
_getXxxxx としたら、これもダメだったみたい
全然ちがう名前を付けなければダメ
  • コメント (0)
  • トラックバック (0)

コメントの投稿

お気軽にコメントください : 投稿されたコメントは承認後に表示されます
プロダクツ

開発ブログ

Link

AD