import Foundation
import CoreData
import UIKit
extension FeedEntity {
@nonobjc public class func fetchRequest() -> NSFetchRequest<FeedEntity> {
return NSFetchRequest<FeedEntity>(entityName: "FeedEntity")
}
@NSManaged public var uuid: UUID?
@NSManaged public var imagePaths: String?
@NSManaged public var tripLog: String?
@NSManaged public var location: String?
@NSManaged public var date: Date?
@NSManaged public var category: String?
@NSManaged public var feedID: String?
// Optional이 아닌 Bool로 수정
@NSManaged public var favorite: Bool
}
extension FeedEntity : Identifiable {
}
문제의 원인
- Bool? (Optional Bool)
Core Data는 Objective-C와 호환되도록 설계되었습니다. Objective-C에는 Bool? (Optional Bool)이라는 개념이 없기 때문에, Core Data는 Optional을 직접 저장할 수 없습니다.- @NSManaged 프로퍼티는 Objective-C와의 호환성을 유지해야 하므로, Bool?은 허용되지 않습니다.
- Bool (Non-Optional Bool)
반면, Bool은 Core Data의 기본 저장 가능 타입으로 인식됩니다. Objective-C에서 bool로 표현되며, Core Data에서 이를 저장하고 관리할 수 있습니다. 따라서 Bool 타입만 @NSManaged로 사용할 수 있는 것이죠.
해결이 된 이유
Bool?에서 ?를 제거하면 Swift의 Optional이 사라지고 Core Data가 이를 정상적으로 처리할 수 있게 됩니다. Core Data는 내부적으로 Bool을 NSNumber로 변환해 저장하며, Swift에서는 이를 직관적으로 사용할 수 있습니다.
'Swift' 카테고리의 다른 글
ArraySlice와 Array (0) | 2024.11.25 |
---|---|
스위프트에서 Extension은 어떻게 사용되나요? (0) | 2024.11.20 |
오류 처리 함수 구현 (1) | 2024.11.14 |
함수를 구현하는 순서, 방식 (데이터 더보기) (0) | 2024.11.01 |
날짜와 시간을 특정형식의 문자열로 반환하는 코드 (0) | 2024.10.09 |