我有一個iOS應用程序,我正在使用Core Data進行存儲。我有兩個實體(「MyEntity」和「OtherEntity」),它們是一對一的關係。兩個實體彼此相關(即每個實體與另一個實體具有反向關係)。除了彼此之間有關係以外,每個實體的其中一個屬性也是另一個實體的主鍵。我遇到的問題是,我意識到我不應該有一個屬性是另一個實體的外鍵,當這些實體彼此有關係時,但是我無法通過引用關係來間接檢索主鍵屬性,但我可以通過參考,我明確設置爲其他實體的主鍵的屬性檢索它:Core Data中的關係屬性在iOS中被調用時返回nil
//NSInteger userId = [testUser.otherEntity.userId integerValue]; --> returns nil
NSInteger userId = [testUser.userId integerValue]; --> works fine
其中「爲testUser」的類型是「myEntity所」的一個實例,它是一個子類NSManagedObject和「otherEntity」是實體的一個實例,「OtherEntity」與「MyEntity」具有反向關係。
這裏是每一個實體的屬性:
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@class OtherEntity;
@interface MyEntity : NSManagedObject
@property (nonatomic, strong) NSString * email;
@property (nonatomic, strong) NSNumber * primaryId; //primary key for MyEntity
@property (nonatomic, strong) NSString * metaData;
@property (nonatomic, strong) NSDate * birthDate;
@property (nonatomic, strong) NSString * name;
@property (nonatomic, strong) NSNumber * userId; //this is the primary key for OtherEntity
@property (nonatomic, strong) OtherEntity *otherEntity;
@end
和這裏的屬性爲OtherEntity:
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@class MyEntity;
@interface OtherEntity : NSManagedObject
@property (nonatomic, strong) NSString * address;
@property (nonatomic, strong) NSString * city;
@property (nonatomic, strong) NSString * country;
@property (nonatomic, strong) NSString * fax;
@property (nonatomic, strong) NSString * phone;
@property (nonatomic, strong) NSString * postalCode;
@property (nonatomic, strong) NSString * province;
@property (nonatomic, strong) NSNumber * myUserId//primary key of MyEntity
@property (nonatomic, strong) NSNumber * userId;//primary key of Other Entity
@property (nonatomic, strong) MyEntity *myEntity;
@end
任何人都可以向我解釋的問題是什麼,或者它是什麼,我做錯了嗎?
在此先感謝所有回覆的人。
ca顯示mi每個實體的屬性? –
您是否檢查'testUser.otherEntity'是否爲零?如果不是:'testUser.otherEntity.userId'的值是什麼? –
我提供了顯示每個實體屬性的代碼。我的應用程序存儲器中的每個實體都有數據,因此我沒有測試過testUser.otherEntity是否爲零。我想我會試試看看會發生什麼。 – syedfa