Một số nền:Cần làm rõ về refreshObject: mergeChanges: YES
Tôi cố gắng để lưu trữ một lượng lớn dữ liệu trong DB địa phương và tôi muốn làm điều đó một cách hiệu quả càng tốt.
Kịch bản:
Có rất nhiều thực thể mà là liên quan, như địa chỉ được kết hợp với một số liên lạc như thế này:
địa chỉ < < -> Số liên lạc
Để quản lý các mối quan hệ, tôi đã viết một phương thức trong mỗi lớp con của NSManagedObject, bên dưới là một số đoạn mã:
// class Contact
- (void)manageRelationships
{
@autoreleasepool {
LocalDBManager *localDBManager = [[LocalDBManager alloc] init];
// managing relationships
// map associated addresses
NSPredicate *addressIdPredicate = [NSPredicate predicateWithFormat:@"%K == %@",ADDRESSID,self.addressid];
// below method returns an object as fault by firing a fetch request against context
NSSet *retrievedAddresses = [localDBManager retrieveManagedObjectsForEntity:ADDR_ENTITY withPredicate:addressIdPredicate asFault:YES withPropertyValues:NO error:nil];
self.addresses = retrievedAddresses;
// managing few more relationships
}
}
điểm để xem xét:
Vì có thể có nhiều mối quan hệ cho một đối tượng, tôi biết rằng tiêu thụ bộ nhớ sẽ tăng lên khi tôi sẽ là mối quan hệ lập bản đồ.
Câu hỏi:
Tôi muốn quay trở lại một đối tượng vào lỗi, mà không mất bất kỳ thay đổi được thực hiện, một khi mối quan hệ được ánh xạ.
Từ tài liệu về táo và một số googling Tôi đã biết rằng tôi có thể sử dụng phương thức refreshObject: mergeChanges:. Vì vậy, tôi đang lên kế hoạch để thêm bên dưới dòng ở cuối của khối mã trong phương pháp manageRelationships:
[[self managedObjectContext] refreshObject:self mergeChanges:YES];
Tôi là một chút bối rối và muốn biết rằng -
Liệu nó có nghĩa là bất cứ điều gì thay đổi được thực hiện cho đối tượng sẽ là được lưu trữ trong lưu trữ liên tục và sau đó đối tượng sẽ chuyển sang lỗi? Nếu có, tôi có thể xem xét nó tương đương với phương pháp lưu NSManagedObjectContext
Vui lòng đề nghị.
gặp vấn đề tương tự! bạn có tìm thấy giải pháp nào cho kịch bản này không? – Bucket