2017-06-11 12 views
1

エンティティを持つコアデータプロジェクトPersonおよびPersonEventです。 PersonEventとPersonの間に多対1の関係(personEvents)があります。 PersonEventのタイプは、birth、death ... date ... のようになります。PersonエンティティのCoreDataPropertiesファイルでは、personBirthDateというカスタムメソッドを作成しました。これはNSDateを返す必要があります。Core Dataカスタムメソッドを処理する方法Obj CまたはSwiftでオブジェクトまたはnilを返すもの

-(NSDate *)personBirthDate 
{ 
    NSDate * birthDate; 

    // Use the relationship to get the related events 
    NSArray *personEventsArray = [self.personEvents allObjects]; 

    // loop array to find an event of type birth 
    // get the NSDate of the event in the PersonEvent 
    // return the birthDate; 
    // code here .... 

    return birthDate; 
} 

一部のビューでは、Person.personBirthDateがバインディングで使用されます。 Dateが存在せず、表示されないが正しく静かなため、xcodeは "nil from method ..."と返答しますので、コードはクラッシュしません ある場合Personにリンクされた出生のイベントがない場合、このメソッドはnilを返します。

が最善か、これを実装するための良い方法は何ですか?

+0

?多分あなたは ' - (NSDate * __nonnull)personBirthDate;' – Joshua

+0

'@property(nonatomic、strong)NSDate * personBirthDate;私は に変更し '@property(NULL可能で、非アトミック、強い)NSDate * personBirthDate;' いいです。 私は決してそれについて考えることはありません。どうもありがとう! – user6717738

答えて

0

は私がそれの代わりに、コメントの答えにしましょう。

メソッドの戻り値の型は、戻り値はnil

一つの解決策はnullablenonnullを変えてはいけません意味、nonnullタイプであると思われるようにクラスのインタフェースを確認し、これはリターンが可能であることを示しますゼロ値。話題のlink

スニペット:

_Nullable_Nonnullここ

はNULL以外とNULL可能キーについて語っリンゴのブログです。ご想像のとおり _Nonnull 1はいけない一方で、 _Nullableポインタは、NULLまたはnilの値を有することができます。コンパイラは、ルールを破るように指示します。インターフェイスで宣言されているもの

関連する問題