2009-09-02 12 views
12

Tôi có đối tượng thực thể Quốc gia có tên quốc gia và mã quốc gia. Nó là một lớp con của NSManagedObject và tôi đang sử dụng nó với mô hình dữ liệu cốt lõi để lưu trữ giá trị của nó vào một kho lưu trữ liên tục.NSManagedObject phân lớp bên ngoài đối tượng được quản lý dưới dạng đối tượng bình thường

Tôi có một nơi mà cùng một đối tượng Quốc gia sẽ được sử dụng làm đối tượng bình thường, tức là tôi sẽ sử dụng nó để lưu trữ một số tên quốc gia tạm thời.

Cho rằng tôi đã khởi Country như sau

[NSManagedObject alloc] init] 

khởi thực hiện thành công, nhưng tôi không thể đặt bất kỳ tài sản cho đối tượng đó. Do đó tôi đã khám phá. Trong đó tôi thấy rằng, init cho NSManagedObject không được hỗ trợ theo tài liệu.

Tôi không biết cách sử dụng Quốc gia NSManagedObject với CoreData cũng như đối tượng bình thường.

Trả lời

10

đoạn 2 của tổng quan các lớp tài liệu của NSManagedObject:

Một đối tượng quản lý được kết hợp với một mô tả thực thể (một thể hiện của NSEntityDescription) cung cấp siêu dữ liệu về đối tượng (trong đó có tên của thực thể mà đối tượng đại diện và tên của các thuộc tính và mối quan hệ của nó ) và với ngữ cảnh đối tượng được quản lý theo dõi các thay đổi đối với biểu đồ đối tượng . Đó là quan trọng đối tượng được quản lý là được định cấu hình đúng để sử dụng với Dữ liệu Core . Nếu bạn khởi tạo trực tiếp đối tượng được quản lý , bạn phải gọi trình khởi tạo được chỉ định (initWithEntity: insertIntoManagedObjectContext :).

Từ các tài liệu của phương pháp này:

quan trọng: Phương pháp này là initializer định cho NSManagedObject. Bạn không nên khởi tạo đối tượng được quản lý chỉ bằng cách gửi nó init.

Tài liệu thực sự rất tốt.

Bạn không muốn thử sử dụng NSManagedObject bên ngoài ngăn xếp CoreData khả thi. NSManagedObjects được thiết kế khá rõ ràng để hoạt động trong môi trường Dữ liệu lõi được cấu hình chính xác. Nếu bạn cần một cá thể tạm thời, bạn có thể tạo một cửa hàng trong bộ nhớ hoặc tạo một cửa hàng trong cửa hàng thông thường của bạn và không lưu các thay đổi mà không xóa nó trước.

+0

Cảm ơn !! Vì vậy, nó không thể khởi tạo như chúng ta làm cho một đối tượng bình thường. Tôi cho rằng bạn đang đề cập đến NSInMemoryStoreType cho lưu trữ liên tục, vì vậy thực thể được chèn sẽ được lưu trữ trong bộ nhớ RAM dễ bay hơi. Tôi có một câu hỏi khác - khi thực sự nó sẽ bị xóa hoặc chúng ta phải xóa nó bằng tay? – raksja

+0

Nó sẽ bị xóa khi bạn yêu cầu xóa (thủ công) hoặc khi ứng dụng của bạn thoát ... InMemoryStores hoạt động giống như các cửa hàng khác, chỉ sự kiên trì đó ... chỉ trong bộ nhớ. – bbum

2

Sử dụng initWithEntity:insertIntoManagedObjectContext: và chuyển nil cho ngữ cảnh đối tượng được quản lý.