2017-06-11 1 views
1

Ich habe ein Core Data Projekt mit Entitäten Person und PersonEvent. Es besteht eine Viele-zu-Eins-Beziehung (personEvents) zwischen PersonEvent und der Person. Ein PersonEvent kann einen Typ wie Geburt haben, Tod ... ein Datum ... In der CoreDataProperties-Datei der Entität Person habe ich eine benutzerdefinierte Methode namens personBirthDate, die ein NSDate zurückgeben sollte.Wie behandelt man Core Data benutzerdefinierte Methoden, die ein Objekt oder Null in Obj C oder Swift

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

Die Person.personBirthDate wird mit Bindung in einigen Ansichten verwendet. Der Code stürzt nicht ab, da ein Ereignis, das kein Datum hat, nicht existiert und nicht angezeigt wird, aber leise korrekt, so beschwert sich xcode mit "keiner von einer Methode zurückgegeben ..." Wenn es solche gibt Keine Ereignisse mit Typ Geburt verbunden mit der Person, diese Methode würde Null zurückgeben.

Was ist der beste oder ein besserer Weg, dies zu implementieren?

+0

Was ist an der Schnittstelle deklariert? vielleicht hast du in der Schnittstelle '- (NSDate * __nonnull) personBirthDate;' – Joshua

+0

'@property (nicht atomare, starke) NSDate * personBirthDate;' wenn ich es in '@property (NULL, nicht atomare, starke) NSDate * personBirthDate;' ist es in Ordnung. Ich habe nie darüber nachgedacht. Danke vielmals! – user6717738

Antwort

0

lassen Sie mich eine Antwort anstelle eines Kommentars machen.

die Schnittstelle der Klasse prüfen, wie es scheint, dass die Methode Rückgabetyp ist ein nonnull Typ sollte den Rückgabewert bedeutet, nie nil

Eine Lösung ändert nonnull-nullable sein, bedeutet dies, dass die Rückkehr sein kann ein Nullwert.

hier ist ein Apfel Blog, der über ungleich null und Nullable-Taste spricht: link

Snippet des Themas:

_Nullable und _Nonnull. Wie Sie vielleicht erwarten, kann ein Zeiger einen NULL- oder NULL-Wert haben, während ein nicht sollte. Der Compiler wird Ihnen sagen, wenn Sie versuchen, die Regeln zu brechen.

Verwandte Themen