मुझे एक समस्या है कि एनएसटीकेनफ़िल्ल्ड में कई से अधिक रिश्ते मॉडल का प्रतिनिधित्व कैसे किया जाए। मैं दो (प्रासंगिक) मॉडल:एनएसटीकेनफ़ील्ड कोर डेटा का प्रतिनिधित्व करने वाले कई रिश्ते
आइटम टैग
एक आइटम कितने टैग हो सकता है और एक टैग कई मदों हो सकता है। तो यह एक उलझन में कई रिश्तों है।
मैं जो करना चाहता हूं वह एनएसटीकेनफ़िल्ल्ड में इन टैग का प्रतिनिधित्व करता है। मैं स्वचालित रूप से मैचों का सुझाव देने वाले टोकनफील्ड के साथ समाप्त करना चाहता हूं (टोकनफील्ड के साथ ऐसा करने का एक तरीका मिला: पूरा करने के लिए फोरसब्रिंगिंग: इंडेक्सऑफोकोकन: इंडेक्सऑफ सिलेक्टेड इटिम) और यदि मौजूदा फाइल से मेल नहीं खाया गया तो नई टैग इकाइयों को जोड़ने में सक्षम होना चाहिए।
ठीक है, आशा है कि आप अभी भी मेरे साथ हैं। मैं यह सब बाइंडिंग और सरणी नियंत्रकों के साथ करने की कोशिश कर रहा हूं (क्योंकि इससे अधिक समझ में आता है, है ना?)
मेरे पास एक एरे नियंत्रक है, "आइटम ऐरे कंट्रोलर", जो मेरे ऐप प्रतिनिधियों के लिए बाध्य है ऑब्जेक्ट कॉन्टेक्स्ट। सभी वस्तुओं को दिखाते हुए एक टेबलव्यू इस सरणी नियंत्रक के लिए बाध्यकारी है।
मेरा एनएसटीकेनफ़िल्ल्ड का मान सर नियंत्रक चयन कुंजी और मॉडल कुंजी पथ: टैग के लिए बाध्यकारी है।
इस कॉन्फ़िगरेशन के साथ, NSTokenField टैग नहीं दिखाएगा। यह सिर्फ मुझे देता है:
<NSTokenFieldCell: 0x10014dc60>: Unknown object type assigned (Relationship objects for {(
<NSManagedObject: 0x10059bdc0> (entity: Tag; id: 0x10016d6e0 <x-coredata://9D77D47A-1171-4397-9777-706F599D7E3B/Tag/p102> ; data: <fault>)
)} on 0x100169660). Ignoring...
यह मुझे समझ में आता है, इसलिए कोई चिंता नहीं है। मैं NSTokenField प्रतिनिधि तरीकों में से कुछ पर देखा है और ऐसा लगता है कि मैं का उपयोग करना चाहिए:
- (NSString *)tokenField:(NSTokenField *)tokenField displayStringForRepresentedObject:(id)representedObject
समस्या है, इस विधि कहा जाता है नहीं है और मैं पहले की तरह ही त्रुटि मिलती है।
ठीक है, इसलिए मेरा अगला कदम एक ValueTransformer को आजमाने और बनाने का था। टैग इकाई के साथ एक सरणी से रूपांतरण -> सरणी (टैग नाम) के साथ सरणी सभी अच्छी थी। दूसरा तरीका अधिक चुनौतीपूर्ण है।
मैंने जो भी प्रयास किया है वह है मेरे साझा ऐप प्रतिनिधि प्रबंधित ऑब्जेक्ट संदर्भ में हर नाम को देखना और मेल खाने वाले टैग को वापस करना। यह मुझे विभिन्न प्रबंधित ऑब्जेक्ट संदर्भों के साथ स्पष्ट रूप से एक समस्या देता है:
Illegal attempt to establish a relationship 'tags' between objects in different contexts (source = <NSManagedObject: 0x100156900> (entity: Item; id: 0x1003b22b0 <x-coredata://9D77D47A-1171-4397-9777-706F599D7E3B/Item/p106> ; data: {
author = "0x1003b1b30 <x-coredata://9D77D47A-1171-4397-9777-706F599D7E3B/Author/p103>";
createdAt = nil;
filePath = nil;
tags = (
);
title = "Great presentation";
type = "0x1003b1150 <x-coredata://9D77D47A-1171-4397-9777-706F599D7E3B/Type/p104>";
}) , destination = <NSManagedObject: 0x114d08100> (entity: Tag; id: 0x100146b40 <x-coredata://9D77D47A-1171-4397-9777-706F599D7E3B/Tag/p102> ; data: <fault>))
मैं गलत कहां जा रहा हूं? मैं इसका कैसे समाधान करूं? क्या यह भी सही दृष्टिकोण है (मुझे लगता है कि आपको वैल्यू ट्रांसफॉर्मर का उपयोग करना होगा?)
अग्रिम धन्यवाद!
मैंने आज शोध करने में कुछ और समय बिताया - अभी भी संसाधनों को समझाने में सक्षम नहीं है। मुझे आशा है कि कोई यहां बचाव के लिए आएगा! :) – simonwh