Tôi gặp sự cố lạ trong ứng dụng Dữ liệu cốt lõi của mình.Vấn đề tiết kiệm dữ liệu cốt lõi: không thể cập nhật thuộc tính biến đổi (NSArray)
Tôi có ba thực thể trong ứng dụng của mình, nhưng hôm nay tôi đã tìm thấy sự cố với một trong số chúng. Thực thể có vấn đề của tôi được gọi là Invoice
và có nhiều thuộc tính, bao gồm Products
. Nó được mã hóa NSArray của NSDictionaries (thông qua NSValueTransformer mặc định).
Mọi thứ hoạt động tốt - tôi tạo hóa đơn, ứng dụng khách, hóa đơn, v.v. Mọi thứ đều hoạt động.
Nhưng, khi tôi chọn hóa đơn của mình từ danh sách rồi cố chỉnh sửa sản phẩm và nhấp vào nút 'Lưu', lưu của tôi chỉ hoạt động cho đến khi ứng dụng của tôi bị chấm dứt.
Sự cố chỉ xảy ra với mảng products
của tôi - phần còn lại (ví dụ: ngày thanh toán, khách hàng, v.v.) tiết kiệm.
gì là tôi làm
tôi vượt qua đối tượng Invoice
tôi qua
NSManagedObject *inv = [self.fetchedResultsController objectAtIndexPath:indexPath];
invoiceEditor.invoice = inv;
Và lưu dữ liệu của tôi (trong InvoiceEditor
VC của tôi):
[self.invoice setValue:client forKey:@"Client"] // NSDictionary;
[self.invoice setValue:products forKey:@"Products"] // NSArray of NSDictionaries;
[self.invoice setValue:pmDate forKey:@"PaymentDate"] // NSDate;
// other attributes
NSManagedObjectContext *context = self.invoice.managedObjectContext;
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
Everythings tiết kiệm cho đến khi bị chấm dứt: client, pr oducts, ngày tháng. Nhưng chỉ những sản phẩm được 'bán lại' sau khi chấm dứt.
Bất kỳ ai?
Làm rõ: Ý của bạn là gì bởi "sản phẩm được 'bán lại"? Bạn có nghĩa là thuộc tính sản phẩm không được lưu? Bạn có nghĩa là nó hoàn nguyên về giá trị trước đó? Nói cách khác, điều gì sẽ xảy ra *** mong đợi để xem thuộc tính 'products' sau khi khởi động lại và những gì bạn thực sự *** thấy? – TechZen
Bất kỳ lý do cụ thể nào mà bạn không sử dụng thực thể và mối quan hệ thay vì một loạt các đối tượng NSDictionary bên trong một NSArray? Đó là một thiết lập rất cồng kềnh và (rất có thể) chậm. – TechZen
1. Tôi có nghĩa là thuộc tính sản phẩm được lưu nhưng sau khi ứng dụng của tôi bị chấm dứt, nó trở về giá trị trước đó. 2. Tôi không sử dụng mối quan hệ vì tôi cần các sản phẩm mọi lúc, ngay cả khi người dùng đã xóa chúng.Tôi có một thực thể được gọi là 'Sản phẩm' nhưng trong 'Hóa đơn' của tôi, tôi đang lưu trữ bản sao của nó. – akashivskyy