cozzin
코찐 기술 블로그
cozzin
전체 방문자
오늘
어제
  • 분류 전체보기
    • Kotlin
    • 백엔드
    • iOS
      • Swift
      • SwiftUI
      • Combine
      • Architecture
    • 개발환경
    • 세미나
    • 생각정리
    • 스터디
    • CS
      • Refactoring
      • OS

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • LinkedIn
  • 강의

공지사항

인기 글

태그

  • Swift
  • 리팩토링
  • os
  • Warning
  • 디자인패턴
  • 컴퓨터공학
  • 테스트
  • slide-over
  • SwiftUI
  • 워닝제거
  • CS
  • darkmode
  • multicast
  • Combine
  • ios
  • XCode
  • 운영체제
  • WWDC21
  • WWDC
  • Ribs

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
cozzin

코찐 기술 블로그

카테고리 없음

CoreData 삽질하기

2019. 11. 7. 14:23
반응형

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하게 처리하지 않기 때문에 워닝으로 추천해주는 듯 하다.

반응형
    cozzin
    cozzin
    Software Engineer

    티스토리툴바