Objective c 如何处理在Obj C或Swift中返回对象或nil的核心数据自定义方法

Objective c 如何处理在Obj C或Swift中返回对象或nil的核心数据自定义方法,objective-c,swift,core-data,entity-relationship,Objective C,Swift,Core Data,Entity Relationship,我有一个核心数据项目,有实体个人和个人事件。 在PersonEvent和Person之间存在多对一关系(personEvents)。 个人事件可以有一种类型,如出生、死亡。。。约会。。。 在Person实体的CoreDataProperties文件中,我创建了一个名为personBirthDate的自定义方法,该方法应返回NSDate -(NSDate *)personBirthDate { NSDate * birthDate; // Use the relationship

我有一个核心数据项目,有实体个人个人事件。 在PersonEvent和Person之间存在多对一关系(personEvents)。 个人事件可以有一种类型,如出生、死亡。。。约会。。。 在Person实体的CoreDataProperties文件中,我创建了一个名为personBirthDate的自定义方法,该方法应返回NSDate

-(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在某些视图中与绑定一起使用。 代码不会崩溃,因为没有日期的事件不存在,也不会显示,但会正确地安静下来。因此,xcode抱怨“从方法返回nil…” 如果没有类型为birth的事件链接到此人,此方法将返回nil


实现这一点的最佳或更好的方法是什么?

让我回答一下,而不是评论一下

检查类的接口,因为方法返回类型似乎是
nonnull
类型,这意味着返回值永远不应该是
nil

一种解决方案是将
nonnull
更改为
nullable
,这表明返回值可以是nil值

以下是一个苹果博客,讨论非空和可空密钥:

主题片段:

\u可空
\u非空
。正如您所料,
\u Nullable
指针可能具有NULL或nil值,而
\u Nonnull
指针则不应具有NULL或nil值。如果您试图违反规则,编译器将告诉您


让我回答一下,而不是评论一下

检查类的接口,因为方法返回类型似乎是
nonnull
类型,这意味着返回值永远不应该是
nil

一种解决方案是将
nonnull
更改为
nullable
,这表明返回值可以是nil值

以下是一个苹果博客,讨论非空和可空密钥:

主题片段:

\u可空
\u非空
。正如您所料,
\u Nullable
指针可能具有NULL或nil值,而
\u Nonnull
指针则不应具有NULL或nil值。如果您试图违反规则,编译器将告诉您


接口上声明了什么?可能在界面中有
-(NSDate*\uu nonnull)personBirthDate'@property(非原子,强)NSDate*personBirthDate;'当我将其更改为“@property(null,非原子,强)NSDate*personBirthDate;”很好。我从未想过这件事。非常感谢!接口上声明了什么?可能在界面中有
-(NSDate*\uu nonnull)personBirthDate'@property(非原子,强)NSDate*personBirthDate;'当我将其更改为“@property(null,非原子,强)NSDate*personBirthDate;”很好。我从未想过这件事。非常感谢!