2016-06-17 14 views
5

Şu anda sınıflarımdan birini NSData olarak bir plist içinde saklıyorum ve bunu yapmak için iyi bir yol değil.iOS'ta Temel Verilere bir Swift Struct'ı nasıl depolarım?

Çekirdek Verileri oluşturmaya çalışıyorum, ancak sınıfımın Structs var. Bu benim ne var:

import Foundation 
import CoreData 

class Favourite: NSManagedObject { 
    @NSManaged var origin: Stop 

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

Ama diyor çünkü bu hiç hoş değil

onun tipi Dahası Objective-C

temsil edilemez çünkü Mülkiyet @NSManaged olarak işaretlenmiş edilemez , Bu hata oluşmazsa, xcdatamodeld dosyamda olduğu gibi ne kuracağımı bilmiyorum.

Değerleri yapıda depolayabilir ve nesnenin başlatılmasını atayabilir miyim? Bu en uygun/temiz yol mu?

+2

Çekirdek Data varlık haline yapı açmak için modelinizi yeniden tasarlamak düşünün. – vadian

cevap

6

böyle devam edecek:

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 
      } 
     } 
    } 

Çok ilginç bir yazı, sen okumalısınız: http://www.jessesquires.com/better-coredata-models-in-swift/

+0

Bu Yapılar'dan bir kaç tane olduğum için yapmaktan kaçınmayı umduğum şey bu, ama sonuçta yapmak zorunda olduğum şey gibi görünüyor. Teşekkürler –

+0

Diğer seçenek 'Stop''un' NSCoding' ile uyumlu hale getirilmesidir, ancak bu basit bir Swift yapısında yapılabilse bile aynı şeyden daha çok veya daha az olacaktır. –

İlgili konular