2011-09-08 15 views
21

मैं प्राप्त किए गए गुण एक दो बार उपयोग करने के लिए कोशिश की है, और हालांकि यह सही दृष्टिकोण हो रहा है, यह कभी नहीं काम करता है।क्या किसी के पास मूल डेटा में किसी प्राप्त संपत्ति का एक कामकाजी उदाहरण है?

मेरे नवीनतम प्रयास में मैंने अपनी इकाई में प्राप्त संपत्ति को जोड़ा, मॉडल में दूसरी इकाई को 'गंतव्य' के रूप में चुना, और भविष्यवाणी को उस शर्त पर सेट किया जो मुझे पता है मान्य है।

समस्या 1: जब इकाई के लिए NSManagedObject स्तरीय उत्पन्न होता है इसे लाए जाने-संपत्ति के लिए कुछ भी शामिल नहीं है। कुछ खोज के बाद मैं ज फ़ाइल में इसके लिए घोषणा और .m फ़ाइल में इसके लिए @dynamic बयान जोड़ा (हाँ, मैं जानता हूँ कि यह एक NSArray * प्रकार है)।

समस्या 2: यहां तक ​​कि उसके बाद, जब मैं कोड में इस संपत्ति का उपयोग मैं एक अपवाद फेंका जा रहा है प्रभाव है कि लाने-अनुरोध एक इकाई नहीं है के लिए कुछ कहा गया है कि मिलता है। मैं मान रहा हूं कि 'इकाई' एक 'गंतव्य' के रूप में निर्दिष्ट होगी और वास्तव में, वहां है।

तो, मैं चाहता हूं कि कोई व्यक्ति एक ठोस कामकाजी उदाहरण (आईओएस प्लेटफ़ॉर्म) प्रदान करे, जहां मॉडल में एक प्राप्त-संपत्ति को परिभाषित किया गया हो, जिसे एनएसएमएनेज्ड ऑब्जेक्ट-व्युत्पन्न वर्ग में घोषित किया गया हो, और वास्तव में कोड से उपयोग किया जाता है।

इस बिंदु मैं इस समय नुक़सान पर अपने आप को ऊपर दे रहा हूँ और बस लाने-अनुरोध कोड को लागू करने पर

+0

एक ही समस्या होने यहाँ मैं यह कैसे स्विफ्ट 2.0 और Xcode 7 में काम मिल गया है और मैं देख सकता हूं कि 'सामग्री' एक्सएमएल में) लेकिन संकलित मॉडल जो एप्लिकेशन में लोड किया गया है, में लक्षित इकाइयां सेट नहीं हैं। निराशा होती! –

उत्तर

2

आप इस पिछले प्रश्न पर एक नज़र लिया है: Xcode 4 Core Data: How to use fetched property created in Data Model editor

स्वीकार किए जाते हैं जवाब और टिप्पणियों के सभी के माध्यम से पढ़ें। ऐसा लगता है जैसे उन्होंने इसे हल किया है।

+0

धन्यवाद सोसबोर्न, लेकिन मैं पहले से ही उस माध्यम से रहा हूं - यही वह जगह है जहां मुझे अपनी पोस्ट में समस्या 1 का जवाब मिला - लेकिन ऐप में संपत्ति का उपयोग करने से समस्या 2 में उल्लिखित अपवाद फेंकता है। –

25

यहाँ (बिट्स आप पहले से ही उल्लेख किया है सहित) मेरी प्रासंगिक कोड के टुकड़े है:

मेरे उदाहरण एक 'कार्ड' वस्तु 'एक आंकड़े' वस्तु के साथ एक 1-> कई संबंध नहीं है कि है। प्रत्येक 'आंकड़े' ऑब्जेक्ट में 'परिणाम' होता है जो 1-4 हो सकता है। मेरे लाई गई संपत्ति मेरे 'कार्ड' वस्तु 'आंकड़े' ऑब्जेक्ट की श्रृंखला है कि 'परिणाम' = 1 केवल के हैं देने के लिए एक सरल एक है।

मैं प्राप्त संपत्ति का उपयोग करना चाहता था ताकि मैं आसानी से 'कार्ड' ऑब्जेक्ट्स को पकड़ सकूं जो कि एक निश्चित संख्या और 'आँकड़े' वस्तुओं की तरह हो।

तो, 'कार्ड' ऑब्जेक्ट में मैंने 'स्टैट्स' पर गंतव्य गंतव्य के साथ प्राप्त संपत्ति 'आँकड़े ओफटाइप' रखा।

इस लाई गई संपत्ति के लिए विधेय में मैं

(SELF.outcome=1) AND (SELF.card=$FETCH_SOURCE) 

'स्व' है डाल 'आंकड़े' के रिकॉर्ड, और $ FETCH_SOURCE जादुई 'कार्ड' वस्तु जब निष्पादित हो जाता है।

@property (nonatomic, retain) NSArray *statsOfTypeOne; 
@dynamic statsOfTypeOne; 

तब मेरे कोड में मैं प्रयोग किया है::

[self.managedObjectContext refreshObject:cardInstance mergeChanges:YES]; 
[cardInstance valueForKey:@"statsOfTypeOne"] 

पाने के लिए

तुमने किया था के रूप में, मैं 'कार्ड' वस्तु के लिए ज और .m फ़ाइलों में निम्नलिखित डाल सरणी पर (हालांकि cardInstance.statsOfTypeOne ठीक होना चाहिए)। रीफ्रेश ऑब्जेक्ट के बिना यह प्राप्त संपत्ति को अपडेट नहीं कर रहा था (मैनुअल के अनुसार)।

I सोचें यह सब कुछ है जो मैंने इसे काम करने के लिए किया था। अगर यह आप के लिए काम करता है तो मुझे बतलाएगा।

पीटर

4

@ पीटर के उत्तर में जोड़ना।

import Foundation 
import CoreData 

@objc(Card) 
class Card: NSManagedObject { 

    @NSManaged var statsOfTypeOne: [Stat] 

} 

और फिर, लाई गई संपत्ति को पढ़ने के लिए: (इकाई मॉडल में स्थापित किया जाएगा:

managedObjectContext.refreshObject(someCard, mergeChanges: true) 
// This works and returns [Stat] type 
someCard.statsOfTypeOne 
// So does this 
someCard.valueForkey("statsOfTypeOne") as! [Stat] 
संबंधित मुद्दे

 संबंधित मुद्दे