我有一个 NSMutableArray 目前拥有一堆核心数据实体,如下所示:
NSFetchRequest *fetchReq = [[NSFetchRequest alloc]init];
[fetchReq setEntity:[NSEntityDescription entityForName:@"Subject"
inManagedObjectContext:self.managedObjectContext]];
subjectsArray = [self.managedObjectContext executeFetchRequest:fetchReq error:nil];
然后我把这个数组放在字典里:
_childrenDictionary = [NSMutableDictionary new];
[_childrenDictionary setObject:subjectsArray forKey:@"SUBJECTS"];
然后将该字典用作我已实现的源列表的数据。我遇到的问题是从subjectArray 中删除一个对象。我已经使用以下代码进行了尝试:
_selectedSubject = [subjectsArray objectAtIndex:0];
[subjectsArray removeObject:subjectToDelete];
现在这工作正常,当我执行以下操作时:
for (Subject *s in subjectsArray) {
NSLog(@"Subjects: %@", [s title]);
}
我选择删除的主题不再存在,并且我在调用后正确更新了源列表:
[_sidebarOutlineView reloadData];
我遇到的问题是,当我退出应用程序并再次打开它时,我之前删除的主题仍然存在。
将核心数据实体提取到数组和字典中是在applicationDidFinishLaunching内部完成的。目前所有这些代码都在 AppDelegate 文件中,该文件有一个 .h 文件,如下所示:
#import <Cocoa/Cocoa.h>
#import "Subject.h"
@interface LTAppDelegate : NSObject <NSApplicationDelegate, NSOutlineViewDelegate, NSOutlineViewDataSource, NSMenuDelegate> {
IBOutlet NSWindow *newSubjectSheet;
IBOutlet NSWindow *newNoteSheet;
IBOutlet NSWindow *newEditSheet;
NSMutableArray *subjectsArray;
}
@property Subject *selectedSubject;
@property (assign)IBOutlet NSOutlineView *sidebarOutlineView;
@property NSArray *topLevelItems;
@property NSViewController *currentContentViewController;
@property NSMutableDictionary *childrenDictionary;
@property NSArray *allSubjects;
关于是什么导致删除的主题重新出现的任何想法?