2016-09-05 9 views
7

में कस्टम कक्षाओं के स्टोर सरणी मैं कोर डेटा के लिए नया हूं लेकिन मेरी एक नई परियोजना के लिए, मैं अपना डेटा कोर डेटा में सहेजना चाहता हूं। मैं एक सरीसृप-वर्ग बनाना चाहता हूं जिसमें दो कस्टम क्लास एरे शामिल हैं। कोर डेटा के बिना मेरे पास कुछ ऐसा होगा:स्विफ्ट: कोर डेटा

import Foundation 
import UIKit 

class Reptile_ { 

    private var _name: String? 
    private var _dateOfBirth: String? 
    private var _morph: String? 
    private var _breed: String? 
    private var _feedingPeriodInDays: Int? 
    private var _reminderTime: NSDate? 
    private var _idealTemperatureAtDay: String? 
    private var _idealTemperatureAtNight: String? 
    private var _gender: Gender? 
    private var _image: UIImage? 
    private var _imageHeader: UIImage? 

    private var _sheddings: [Shedding_]? 
    private var _feedings: [Feeding_]? 
    private var _defecations: [Defecation_]? 
    private var _weights: [Weight_]? 
    private var _lengths: [Length_]? 
    private var _others: [Others_]? 

} 

और उदा। वर्ग Weight_ कुछ इस तरह दिखेगा:

import Foundation 

class Weight_ { 

    private var _date: NSDate? 
    private var _weight: Double? 

} 

मैं स्ट्रिंग्स, बूलियन डाटा, जैसा कि कुछ विशेषताओं के साथ एकल वर्ग को बचाने के लिए कोर डेटा का उपयोग कर सकते हैं ... लेकिन मैं नहीं जानता कि मैं कैसे की सरणियों की बचत होगी कस्टम वस्तुओं?

मैंने कहीं पढ़ा है कि मुझे आधार Reptile कक्षा के साथ संबंध बनाने (कई में से एक) बनाने की आवश्यकता है।

enter image description here

इस कस्टम ऑब्जेक्ट की श्रृंखला को जोड़ने के लिए सही तरीका है: तो मुझे लगता है कि जो इस के परिणामस्वरूप किया है? यदि हां, तो मैं कैसे जारी रखूंगा (बस 'CreateNSManagedObject Subclass ...' पर क्लिक करें?)? मैं सरणी में एक उदाहरण कैसे जोड़ूं? मैं इसे कैसे पढ़ूं?

उत्तर

3

आप सही हैं कि कोर डेटा में कस्टम सरणी होने से उन वस्तुओं के लिए कोर डेटा ऑब्जेक्ट्स बनाना और उन्हें आपके द्वारा पोस्ट किए गए ग्राफ में किए गए संबंधों के माध्यम से कनेक्ट करना शामिल है।

मैं कैसे जारी रखूं (बस 'CreateNSManagedObject Subclass ...'?) पर क्लिक करें?

अब आपके पास ऑब्जेक्ट ग्राफ़ है, अगला चरण बड़े पैमाने पर इस पर निर्भर करता है कि आपके पास एक्सकोड 7 या एक्सकोड 8 है या नहीं। पूर्व के मामले में, आपको उपclass बटन बनाने पर क्लिक करना चाहिए। फिर, यदि आपके डेटा मॉडल में कुछ भी बदलता है, तो आपको उप-वर्गों को दोबारा पुन: उत्पन्न करना होगा।

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

Core Data WWDC16 session

Xcode 8

से छवि मैं इसे कैसे पढ़ा करते हैं?

आप यह मानते हुए कोर डाटा में आदेश की स्थापना की है नहीं, इसे वापस एक NSSet के रूप में आ जाएगा, लेकिन आप एक सरणी के लिए इसे परिवर्तित कर सकते हैं:

reptileInstance.lengths.allObjects as! [Length] 

मैं एक उदाहरण कैसे जोड़ सकता हूँ सरणी के लिए?

तुम कुछ सरल पसंद करते हैं या तो कर सकते हैं:

lengthInstance.reptile = reptileInstance 

किस मामले lengthInstance स्वचालित रूप से reptileInstance की lengths संग्रह संपत्ति में जोड़ दिया जाएगा, या आप reptileInstance पर एक नया NSSetlengths करने के लिए सेट कर सकते हैं।

यह एक बहुत ही सरल व्याख्या है। आपको Core Data Programming Guide देखें, लेकिन ध्यान दें कि यह आगामी एक्सकोड 8 के लिए अभी तक अपडेट नहीं किया जा सकता है या नहीं भी हो सकता है।

+0

अद्भुत उत्तर के लिए धन्यवाद! यह वास्तव में मुझे बहुत मदद की। –