2011-05-26 11 views
11

मेरे पास दो कोर डेटा इकाइयां हैं (Client और UserFile) कि मैंने सफलतापूर्वक एक संबंध स्थापित किया है।मुझे रीस्टकिट के साथ उपयोग के लिए कोर डेटा इकाइयों को कैसे जोड़ना चाहिए?

मैंने दोनों इकाइयों के लिए कक्षाएं बनाई हैं, और उन्हें RKManagedObject के उप-वर्ग बनाये हैं।

जब मैं एक नया UserFile बनाता हूं, तो मैं इसे Client से सही ढंग से संबद्ध करना चाहता हूं। यहाँ मैं क्या कर रहा है:

Client *client = [Client objectWithPrimaryKeyValue:@"1"]; 
UserFile *file = [UserFile object]; 
file.client = client; 
file.clientId = client.clientId; 
[[RKObjectManager sharedManager] postObject:file delegate:self]; 

ऐसा लगता है जैसे मैं file.clientId आवंटित करने के लिए इतना है कि सही पैरामीटर सर्वर के लिए भेजा जाता है (अगर मैं केवल आवंटित file.client तो प्रस्तुत client_id खाली है) है।

ऐसा लगता है जैसे मैं file.client आवंटित करने के लिए से बनाया है और फ़ाइल से संबद्ध किया जा रहा है एक नया, खाली Client को रोकने के लिए है (ग्राहक संबंध आवश्यक है)।

क्या यह सही है? क्या मुझे वास्तव में विदेशी कुंजी और वास्तविक इकाई दोनों को असाइन करना है? यह मेरे लिए थोड़ा अनावश्यक लगता है, लेकिन मैं खुशी से स्वीकार करूंगा कि मेरा कोर डेटा और रेस्टकिट ज्ञान की कमी है!

+0

क्या आप शायद प्रश्न संपादित कर सकते हैं और अपना - (NSDictionary *) तत्व ToPropertyMappings कार्यान्वयन जोड़ सकते हैं। – ugiflezet

उत्तर

9

अपने प्रश्न का उत्तर देने के लिए, ऐसा लगता है कि आपको इस समय दोनों चरणों की आवश्यकता है। या तो रिश्तों उदाहरण में ठीक तरह से स्थापित नहीं कर रहे हैं, या आप वास्तव में दोनों चरणों की आवश्यकता है

DBTopic* topic = [[DBTopic findFirstByAttribute:@"topicID" withValue:topicID] retain]; 
_post = [[DBPost object] retain]; 
_post.topicID = topic.topicID; 
_post.topic = topic; 

तो: यहाँ RKDiscussionBoardExample से कोड पुस्तकालय के साथ शामिल है।

इसके अलावा, आपको RestKit के नवीनतम संस्करण का उपयोग करना चाहिए जिसमें एक अलग ऑब्जेक्ट मैपर है और RKManagedObject को बहिष्कृत करता है। आपके रिश्तों को इस तरह कुछ दिखना चाहिए:

RKManagedObjectMapping* clientMapping = [RKManagedObjectMapping mappingForClass: [Client class]]; 
clientMapping.primaryKeyAttribute = @"clientID"; 
[clientMapping mapKeyPathsToAttributes: 
@"id", @"clientID", 
nil]; 

RKManagedObjectMapping* userFileMapping = [RKManagedObjectMapping mappingForClass:[UserFile class]]; 
userFileMapping.primaryKeyAttribute = @"userFileID"; 
[userFileMapping mapKeyPathsToAttributes: 
@"id", @"userFileID", 
@"client_id", @"clientID", 
nil]; 

[userFileMapping mapRelationship:@"client" withObjectMapping:clientMapping]; 
संबंधित मुद्दे