Tôi đang sử dụng Dữ liệu cốt lõi theo chương trình (tức là không sử dụng .xcdatamodel
tệp mô hình dữ liệu) theo cách tương tự như được mô tả trong Apple Core Data Utility Tutorial. Vì vậy, vấn đề của tôi là khi tôi cố gắng để thêm một thuộc tính cho một thực thể với các loại NSBooleanAttributeType
, nó được một chút lỗi. Khi tôi thêm nó vào NSManagedObject
file header lớp con của tôi (trong hướng dẫn này, đó sẽ là Run.h
) nhưLoại cho các thuộc tính boolean trong các thực thể Core Data là gì?
@property (retain) BOOL *booleanProperty;
biên dịch thất bại, nói error: property 'booleanProperty' with 'retain' attribute must be of object type
.
Nó có vẻ như một số nơi ở Cocoa sử dụng NSNumber
đối tượng để đại diện cho các phép toán luận, vì vậy tôi cố gắng thiết lập nó để
@property (retain) NSNumber *booleanProperty;
để thay thế. Tuy nhiên, điều này gợi lên các lỗi runtime sau:
*** -[NSAttributeDescription _setManagedObjectModel:]: unrecognized selector sent to instance 0x101b470
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSAttributeDescription _setManagedObjectModel:]: unrecognized selector sent to instance 0x101b470'
Sử dụng GDB, tôi có thể tìm lại này vào dòng trong mã nguồn của tôi, nơi tôi thêm thực thể của tôi để mô hình đối tượng quản lý:
[DVManagedObjectModel setEntities:[NSArray arrayWithObjects:myEntityWithABooleanAttribute, myOtherEntity]];
Vì vậy, câu hỏi của tôi là: loại gì tôi nên đặt booleanProperty vào tiêu đề lớp tùy chỉnh của tôi?
Cũng đáng chỉ ra rằng đó là “BOOL booleanProperty”, không có *. * Chỉ dành cho con trỏ, bao gồm con trỏ đối tượng. –
Xem [trả lời này] (http://stackoverflow.com/a/3934284/164989) để có giải pháp thích hợp hơn. – opsidao
Câu trả lời này sẽ bị xóa vì nó không chính xác. –