반응형
ManagedObject 만들기
Swift에서 ManagedObject를 만들어서 사용하려 한다. 이렇게 MyManagedObject를 하나 만들고, xcdatamodel에도 추가했다.
final class MyManagedObject: NSManagedObject { }
그런데 테스트를 해보니 아래와 같이 entity를 못가져온다;;
+entityForName: could not locate an entity named 'AppName.MyManagedObject' in this model.
나는 AppName.ObjectName 으로 가져오고 싶었는데, Swift에서 만들면 뭔가 다르게 적용되나 보다.
그래서 검색해보다가 @objc()로 이름을 지정해주면 된다는 말이 있어서 해봤다.
@objc(MyManagedObject)
final class MyManagedObject: NSManagedObject { }
조금 요상하지만 정상적으로 작동한다.
Arrtibute로 Array 사용하기
Attribute의 type을 보면 array가 없다.
별다른 설명이 없어서 좀 찾아봤는데, data 형태로 변환해서 아카이브/언아카이브 하면 된다.
그리고 기본 데이터형은 별다른 작업 없이 Transformable type으로 지정하면 변환이 된다고 한다.
그런데 콘솔창에 워닝이 뜨는데, NSSecureUnarchiveFromDataTransformer를 사용하라고 추천해준다.
Transformer를 넣어주는 곳이 없어서 조금 헤맸는데, xcdatamodel > entity > attributes > 해당 attribute > attribute inspector에 가보면 Transformer라는 항목이 있다. 여기에 NSSecureUnarchiveFromDataTransformer를 넣어주면 워닝이 사라진다. 자동으로 transform 해주긴 하지만, secure하게 처리하지 않기 때문에 워닝으로 추천해주는 듯 하다.
반응형