Tôi đang làm việc với các tính năng UIDocument mới trong iOS 5.0. Tôi có một ứng dụng hiện có sử dụng nhiều Mô hình Dữ liệu khác nhau (các tệp momd). Theo tài liệu cho UIManagedDocument, bạn có thể ghi đè lên - (NSManagedObjectModel *) managedObjectModel để tải một Mô hình Dữ liệu cụ thể (mặc định là tải tất cả các mô hình dữ liệu được tìm thấy được hợp nhất với nhau). Cả hai mô hình dữ liệu đều có các tên mô hình trùng lặp với các lược đồ khác nhau, vì vậy điều này là không mong muốn trong trường hợp của tôi.Ghi đè managedObjectModel trong UIManagedDocument
Vì vậy, vấn đề tôi có ở đây trong một mẫu đơn giản, là tôi có thể ghi đè lên các chức năng, nhưng tôi không thể gán nó là kết quả. Cả hai đều là private, do đó, _managedObjectModel không thể được truy cập bởi lớp con; và, nó là chỉ đọc, vì vậy self.managedObjectModel không thể được chỉ định ..
Tôi đã tìm một ví dụ UIManagedDocument ghi đè lên managedObjectModel, nhưng Apple không xuất hiện để cung cấp một.
Tôi có thể xác định biến mẫu mới _myManagedObjectModel và gán biến đó. Sau đó trả lại trên accessor tôi ghi đè. Mối quan tâm của tôi là có thể phá vỡ một số thực hiện nội bộ của UIManagedDocument mà không sử dụng accessor managedObjectModel ưu tiên cho _managedObjectModel (thường được thấy trong việc triển khai Apples ...)
Có vẻ như một vấn đề thẳng về phía trước và tôi nghi ngờ mình ' m chỉ thiếu một cái gì đó thực sự đơn giản để cho phép ghi đè thích hợp.
//
// DTNoteDocument.m
// document-test
//
//
#import "DTNoteDocument.h"
@implementation DTNoteDocument
NSString * const kDataManagerModelName = @"Note";
-(NSManagedObjectModel*)managedObjectModel {
if (_managedObjectModel != nil)
return _managedObjectModel;
NSBundle *bundle = [NSBundle mainBundle];
NSString *modelPath = [bundle pathForResource:kDataManagerModelName ofType:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:[NSURL fileURLWithPath:modelPath]]; // compile error on this line, private variable cannot be assigned
return _managedObjectModel;
}
@end
Tiêu đề:
#import <UIKit/UIKit.h>
@interface DTNoteDocument : UIManagedDocument
@end