2016-06-17 2 views
5

지금은 NSData로 내 수업 중 하나를 plist에 저장하고 있는데 분명히 그렇게하는 것이 좋지 않습니다.iOS의 핵심 데이터에 Swift Struct을 저장하려면 어떻게해야합니까?

그래서 코어 데이터를 설정하려고하지만 클래스에는 구조가 있습니다. 이것은 내가 무엇을 가지고 :

import Foundation 
import CoreData 

class Favourite: NSManagedObject { 
    @NSManaged var origin: Stop 

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

을하지만 그것이 말하는 때문에이 좋지 않습니다

의 유형은 또한 목표 - C

으로 표현 될 수 없기 때문에 속성이 @NSManaged로 표시 할 수 없습니다 , 이 오류가 발생하지 않으면 xcdatamodeld 파일에서 설정 한 내용을 알지 못합니다.

내가 구조체에 값을 저장할 수 있고 객체의 초기화에 지정할 수 있다고 생각하십니까? 가장 최적의 방법인가요?

+2

는 코어 데이터 엔티티로 구조체를 설정하는 모델을 재 설계하는 것이 좋습니다. – vadian

답변

6

I는 다음과 같이 진행됩니다 :

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

이것은 내가이 Structs 중 몇 개를 가지고 있기 때문에해야하는 것을 피하고자 바랬지 만, 결국 그렇게해야 할 것 같습니다. Thanks –

+0

다른 옵션은'Stop'을'NSCoding'에 따르는 것이지만, 보통 Swift 구조체에서 수행 할 수 있다고하더라도, 그 정도는 같거나 적을 것입니다. –

관련 문제