2012-04-15 28 views
5

Tôi có quy trình thiết lập ngắn trong ứng dụng và tôi tạo NSManagedObject để lưu trữ tên và các chi tiết khác của một cá nhân, tuy nhiên trong quá trình thiết lập này tôi không muốn lưu đối tượng cho đến khi người dùng nhấn 'Xong' ngay ở cuối thiết lập (chỉ trong trường hợp họ hủy thiết lập vì bất kỳ lý do gì).Lưu trữ nhưng không lưu NSManagedObject vào CoreData?

Vì vậy, có thể giữ đối tượng giữ thông tin của tôi trong một thời gian ngắn cho đến khi kết thúc quá trình thiết lập mà không thực sự lưu nó vào CoreData không?

Cảm ơn.

Trả lời

2

Khi bạn đang xử lý CoreData, tất cả hành động thêm/sửa/xóa xảy ra trong NSManagedObjectContext - nhưng thay đổi không được lưu vào đĩa cho đến khi bạn gọi 'lưu' trên ngữ cảnh đó.

Vì vậy, câu trả lời là có - đây là hành vi bạn nên đã nhận được. Nếu bạn đang thêm hoặc sửa đổi các thuộc tính của NSManagedObjects, những thay đổi này được lưu giữ trong bộ nhớ của ngữ cảnh, nhưng không được lưu vào đĩa cho đến khi bạn thực sự gọi là 'lưu'.

+1

Vâng đó là nơi tôi gặp sự cố. Tôi không bao giờ gọi lưu vào ngữ cảnh, tôi thậm chí không thể nhập bất kỳ chi tiết nào, để trống tất cả các trường trong khung nhìn chi tiết và quay trở lại danh sách đối tượng của tôi và xem một đối tượng đã được thêm vào mặc dù điều này (với giá trị null). –

+0

Điều đó nói rằng, tôi nghĩ rằng tôi chỉ tìm thấy những gì tôi đã làm sai. Bên cạnh đó, mặc dù, tôi cần phải vượt qua đối tượng của tôi xuống khoảng 5 lượt xem (đó không phải là điều thuận lợi nhất để làm) làm thế nào tôi có thể dễ dàng làm điều này? –

+1

Nếu mỗi bộ điều khiển xem trung gian sẽ tương tác với đối tượng, có nghĩa là chỉ cần truyền đối tượng cho mỗi bộ điều khiển xem liên tiếp (tôi giả định bạn đang sử dụng ngăn điều khiển nav) theo cách của thuộc tính. Nếu các khung nhìn 2-4 không liên quan gì đến đối tượng, bạn có thể xem xét việc tạo bộ điều khiển xem thứ 5 của mình là một đại biểu đầu tiên của bạn (nơi bạn lấy được tham chiếu đối tượng được quản lý ban đầu). – isaac

12

Bạn cũng có thể sử dụng

NSEntityDescription *ed = [NSEntityDescription entityForName:@"YourManagedObject" inManagedObjectContext:managedObjectContext]; 
YourManagedObject *obj = [[[YourManagedObject alloc] initWithEntity:ed insertIntoManagedObjectContext:nil] autorelease]; 

để tạo ra các đối tượng quản lý mà không chèn nó vào hoàn cảnh của bạn. Bạn có thể thực hiện việc đó sau bằng cách gọi [managedObjectContext insertObject:obj];.

+0

Bạn tiết kiệm trong ngày của tôi !!! Đánh giá cao. :) –

Các vấn đề liên quan