2016-06-17 5 views
5

फिलहाल मैं अपनी कक्षाओं में से एक को एनएसडीटा के रूप में एक प्लेस्ट में संग्रहीत कर रहा हूं और जाहिर है कि ऐसा करने का एक अच्छा तरीका नहीं है।मैं आईओएस पर कोर डेटा में एक स्विफ्ट स्ट्रक्चर कैसे स्टोर करूं?

तो मैं कोर डेटा सेट अप करने की कोशिश कर रहा हूं, लेकिन मेरी कक्षा में स्ट्रक्चर हैं। यह मैं क्या है:

import Foundation 
import CoreData 

class Favourite: NSManagedObject { 
    @NSManaged var origin: Stop 

    struct Stop { 
     var name: String; 
     var id: String; 
    } 
} 

लेकिन क्योंकि यह कहना है कि यह अच्छा नहीं है

संपत्ति @NSManaged के रूप में चिह्नित नहीं किया जा सकता, क्योंकि इसके प्रकार ऑब्जेक्टिव-सी

में इसके अलावा नहीं दर्शाया जा सकता, अगर यह त्रुटि नहीं होती है, तो मुझे नहीं पता कि मैं इसे अपने xcdatamodeld फ़ाइल में कैसे सेट अप करूंगा।

मुझे लगता है कि मैं संरचना में मूल्यों को संग्रहीत कर सकता हूं और ऑब्जेक्ट की प्रारंभिकरण पर असाइन कर सकता हूं? क्या यह सबसे इष्टतम/साफ तरीका है?

+2

अपने मॉडल एक कोर डाटा इकाई में struct चालू करने के लिए नया स्वरूप पर विचार करें। – vadian

उत्तर

6

मैं इस तरह आगे बढ़ना होगा:

import Foundation 
import CoreData 

    struct Stop { 
     var name: String; 
     var id: String; 
    } 

    class Favourite: NSManagedObject { 

     @NSManaged var name: String 
     @NSManaged var id: String 

     var stop : Stop { 
      get { 
       return Stop(name: self.name, id: self.id) 
      } 
      set { 
       self.name = newValue.name 
       self.id = newValue.id 
      } 
     } 
    } 

बहुत दिलचस्प लेख, आप पढ़ना चाहिए: http://www.jessesquires.com/better-coredata-models-in-swift/

+0

यही वह है जो मैं ऐसा करने से बचने की उम्मीद कर रहा था क्योंकि मेरे पास इनमें से कुछ स्ट्रक्च हैं, लेकिन ऐसा लगता है कि मुझे क्या करना होगा। धन्यवाद –

+0

दूसरा विकल्प 'स्टॉप' को 'एनएससीओडीडी' के अनुरूप बनाना है, लेकिन यह एक सादा स्विफ्ट स्ट्रक्चर पर किया जा सकता है, भले ही यह वही चीज़ कम या ज्यादा हो। –

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