विदेशी कुंजी को एक विशेषता के रूप में स्टोर किए बिना रिश्ते को कनेक्ट कर सकते हैं, यानी सीधे JSON में कीपैथ से?विदेशी कुंजी के साथ RestKit ऑब्जेक्ट मैपिंग रिश्तों
विशेष रूप से, मेरे पास नौकरी है_मेनी कमरे के रिश्ते हैं। कमरे के JSON काम शामिल नहीं है, बल्कि, दोनों अलग लोड किए गए हैं:
- job: {
id: 1,
name: "John"
}
- room: {
id: 4,
job_id: 1,
name: "spare bedroom"
}
नौकरी कक्ष से पहले भरी हुई है।
मेरे CoreData मॉडल, नौकरी वर्तमान में मैं कमरे में करने के लिए एक @property (nonatomic, strong) NSNumber *jobID;
, जो मैं @synthesize
जोड़ने के लिए
@interface Job : NSManagedObject
@property (nonatomic, retain) NSNumber * identifier;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSSet *rooms;
@end
@interface Room : NSManagedObject
@property (nonatomic, retain) NSNumber * identifier;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) Job *job;
@end
गुण है।
JobMapping:
mapping = [RKManagedObjectMapping mappingForClass:[Job class]];
[mapping setPrimaryKeyAttribute:@"identifier"];
[mapping mapAttributes:@"name", nil];
[mapping mapKeyPath:@"id" toAttribute:@"identifier"];
[mapping mapRelationship:@"rooms" withMapping:[Room objectMapping]];
RoomMapping
mapping = [RKManagedObjectMapping mappingForClass:[Room class]];
[mapping setPrimaryKeyAttribute:@"identifier"];
[mapping mapAttributes:@"name", nil];
[mapping mapKeyPath:@"id" toAttribute:@"identifier"];
[mapping mapKeyPath:@"job_id" toAttribute:@"jobID"];
[mapping mapRelationship:@"job" withMapping:[Job objectMapping]];
[mapping connectRelationship:@"job" withObjectForPrimaryKeyAttribute:@"jobID"];
मैं वहाँ एक रास्ता मैं अतिरिक्त jobID संपत्ति के बिना ऐसा कर सकते हैं अगर सोच रहा था? मैं CoreData xcdatamodeld में जॉबआईड विशेषता नहीं लेना चाहता - यह अनावश्यक है, क्योंकि रिश्ते उसमें शामिल है।
अगर मैं एनएसएमएनेज्ड ऑब्जेक्ट्स का पुनर्निर्माण करता हूं, तो मुझे जॉबआईडी प्रॉपर्टी को फिर से जोड़ना होगा, जो थकाऊ है। क्या मैं JSON में job_id कीपैथ के माध्यम से कमरे को अपने संबंधित नौकरी से जोड़ने के लिए restkit नहीं कह सकता?
अगर मैं [mapping connectRelationship:@"job" withObjectForPrimaryKeyAttribute:@"job_id"];
लिए संपत्ति, mapKeyPath:@"job_id"
लाइन अंतिम पंक्ति हटा दें, और बदल रहा
the entity Room is not key value coding-compliant for the key "job_id".
क्या आपको पता चला कि असली डेटा के संबंध में अनावश्यक आईडी संपत्ति के बिना कोर डेटा में रिश्ते को सही ढंग से कैसे कनेक्ट किया जाए? – thejaz