Swift에서 NSManagedObject의 Subclass를 사용할 때 해당 Class 이름에 모듈 이름을 추가하는 Prefix
swift에서 CoreData의 NSManagedObject의 Subclass를 제작할 때
@objc(EntityClass)
방법이 있는데 이것에 비해 CoreData의 Enity 정의는(모듈 이름).(EnityClass 이름)
이렇게 하는 것이 비교적 좋다.
@objc(Enity)를 설치할 때 @objc(Entity)
에 더하면 이름 공간이 글로벌(이전 Objective C에서 사용했던) 장소로 바뀔 수 있다.
즉@objc(ChildEntity)
class ChildEntity: NSManagedObject {
@NSManaged var identity: String
@NSManaged var name: String?
@NSManaged var birthday: NSDate?
@NSManaged var sex: NSNumber?
@NSManaged var imageFilename: String?
}
이렇게 쓰면ChildEntity
이 클래스가 정의되고 코어데이터의 설정ChildEntity
도 쓰면 됩니다.
그러나 이렇게 되면 이전의 Objective C 코드에서 간혹 ChildEnity라는 Class(또는 인터페이스)를 정의했다면 구축할 수 없을 것 같다(그래서 지금까지 세 글자를 추가했어야 했다).
@objc가 없는 경우 @objc()
를 추가하지 않을 경우 CoreData의 모델 정의에 모듈 이름의 Prefix를 추가합니다.다음과 같은 느낌이 듭니다.
class ChildEntity: NSManagedObject {
@NSManaged var identity: String
@NSManaged var name: String?
@NSManaged var birthday: NSDate?
@NSManaged var sex: NSNumber?
@NSManaged var imageFilename: String?
}
일반적인 Swift의 Class는 モジュール名.Class名
이름이 있기 때문에 다른 코드와 프로그램 라이브러리와 충돌하지 않습니다. (모듈 이름이 같지 않으면...)
일반적으로 모듈 이름은 Project의 Target 이름입니다.
어느 것이 좋아요?
나는 @objc()를 넣지 않는 것이 좋다고 생각한다.
@objc(ChildEntity)
class ChildEntity: NSManagedObject {
@NSManaged var identity: String
@NSManaged var name: String?
@NSManaged var birthday: NSDate?
@NSManaged var sex: NSNumber?
@NSManaged var imageFilename: String?
}
@objc()
를 추가하지 않을 경우 CoreData의 모델 정의에 모듈 이름의 Prefix를 추가합니다.다음과 같은 느낌이 듭니다.class ChildEntity: NSManagedObject {
@NSManaged var identity: String
@NSManaged var name: String?
@NSManaged var birthday: NSDate?
@NSManaged var sex: NSNumber?
@NSManaged var imageFilename: String?
}
일반적인 Swift의 Class는 モジュール名.Class名
이름이 있기 때문에 다른 코드와 프로그램 라이브러리와 충돌하지 않습니다. (모듈 이름이 같지 않으면...)일반적으로 모듈 이름은 Project의 Target 이름입니다.
어느 것이 좋아요?
나는 @objc()를 넣지 않는 것이 좋다고 생각한다.
사용@objc방법은 때로는 좋지 않을 수도 있지만, 덧붙이지 않는 방법으로 해결된다(이것은 일시적인 문제일 수도 있다).
Reference
이 문제에 관하여(Swift에서 NSManagedObject의 Subclass를 사용할 때 해당 Class 이름에 모듈 이름을 추가하는 Prefix), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mokemokechicken/items/9cb875cc4143947fcc06텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)