Câu trả lời ngắn:
Không, không cần thiết.
Câu trả lời dài:
Mục tiêu-C là ngôn ngữ lập trình liên kết động. Trong một hình thức ngắn có nghĩa là, mọi quyết định kiểu có thể được thực hiện trong thời gian chạy thay vì biên dịch thời gian và bạn có thể truy cập các thuộc tính của một và gửi tin nhắn đến một đối tượng mà không biết loại (lớp) của nó.
Nhưng không cần thiết cho khung Dữ liệu cốt lõi và bạn là người dùng của Dữ liệu cốt lõi và mô hình của bạn để biết loại đối tượng được quản lý cho loại thực thể. Nó thậm chí không cần thiết phải có một loại cụ thể cho một loại thực thể. (Tôi không tạo ra các lớp học rất thường xuyên và nếu tôi làm, tôi làm điều đó bằng tay.) Vì vậy, trái ngược với các ngôn ngữ lập trình khác các lớp được tạo ra là không cần thiết để cung cấp cho trình biên dịch một loại.
Tuy nhiên, trình biên dịch muốn xem ít nhất mọi phương pháp ít nhất một lần để lấy chữ ký (nhập tham số). Nếu không nó sẽ cảnh báo. Thậm chí nó có thể có mã làm việc như thế này ...
NSManagedObject *person = …
NSString *firstName = [person firstName];
... cho một loại thực thể Person
với một tài sản firstName
, trình biên dịch sẽ cảnh báo bạn, rằng ông không biết gì về một phương pháp –firstName
.
Thay vào đó bạn có thể gõ một cái gì đó như thế này:
NSManagedObject *person = …
NSString *firstName = [person valueForKey:@"firstName"];
(Trình biên dịch biết -valueForKey:
, vì đây là một phương pháp khai báo trong NSObject
.)
Bên cạnh đó bạn sẽ có được những lợi ích như hoàn thành mã, kiểm tra lỗi đánh máy và vân vân. Nhưng bạn không cần phải sử dụng công cụ tạo mã của Xcode. Đơn giản chỉ cần khai báo một lớp như vậy và tại các thuộc tính tại giao diện. Người truy cập có thể được tạo động bằng cách sử dụng @dynamic
. (Cá nhân tôi gần như không bao giờ sử dụng tạo mã tĩnh.)
Chỉnh sửa: Đã thêm kết quả của cuộc thảo luận vào các nhận xét.
Vì vậy, có giao diện (".h-tệp") của danh mục, trình biên dịch biết đủ để biên dịch toàn bộ mã mà không có cảnh báo. Điều này sẽ làm việc trong thời gian chạy, nếu nó được đảm bảo - hoặc được kiểm tra tại thời gian chạy - một thông báo tương ứng có thể được gửi đi. Điều này có ý nghĩa trong nhiều tình huống ngay từ đầu của Objective-C, i. e. cho các giao thức chuyển tiếp và không chính thức. Trong bối cảnh của dữ liệu lõi nó được sử dụng để tự động tạo ra các phương thức truy cập chuẩn. Tất cả mọi thứ hoạt động tốt mà không cần thực hiện bất kỳ.
Tuy nhiên, người ta muốn thực hiện vì một số lý do, i. e. vệ sinh về thay đổi giá trị. Trong trường hợp này, bạn có thể chỉnh sửa. Nhưng đối với hành vi tiêu chuẩn thì không cần thiết.
Các tệp riêng biệt hữu ích nếu bạn muốn thêm các thuộc tính/biến mẫu bổ sung vào lớp, so sánh http://stackoverflow.com/questions/34063965/nsmanagedobject-subclass-property-in-category. –
Đó là những gì 'MyObject. *' Dành cho, 'MyObject + CoreDataProperties được tạo tự động. *' Được cho là không bị ảnh hưởng để chúng có thể được tạo lại nếu bạn thay đổi mô hình của mình. – trapper