我已经浏览了大量的核心数据示例和Apple文档。我一整天都在工作,我就在墙上。
我想要发生的是我在文本字段中键入一些文本,保存文件,再次打开文本并在那里查看文本。
我制作了一个非常简单的基于Core Data文档的应用程序来进行实验。以下是详细信息:
1)数据模型有一个Entity(“Note”),其中一个属性(“title”)是一个NSString。
2)我创建了一个视图控制器“ManagingViewController”,它在名为“NoteView”的视图中加载到MyDocument.xib中的一个框中,没有任何问题。 NoteView.nib中只有一个NSTextField。
ManagingViewController.h
#import <Cocoa/Cocoa.h>
#import "Note.h"
@interface ManagingViewController : NSViewController {
NSManagedObjectContext *managedObjectContext;
IBOutlet NSTextField *title;
}
@property (retain) NSManagedObjectContext *managedObjectContext;
@property (retain, readwrite) NSTextField *title;
@end
和ManagingViewController.m
#import "ManagingViewController.h"
#import "Note.h"
@implementation ManagingViewController
@synthesize managedObjectContext;
@synthesize title;
- (id)init
{
if (![super initWithNibName:@"NoteView" bundle:nil]) {
return nil;
}
return self;
}
@end
我有一个名为“Note.h”的NSManagedObject
#import <CoreData/CoreData.h>
#import "ManagingViewController.h"
@interface Note : NSManagedObject
{
}
@property (nonatomic, retain) NSString * title;
@end
和.m文件:
#import "Note.h"
#import "ManagingViewController.h"
@implementation Note
@dynamic title;
@end
在NoteView.nib中:
1)文件的所有者是ManagingViewController,并且文本字段和视图的IBOutlets已连接。
2)我将NSObjectController对象拖到名为“Note Object Controller”的Interface Builder文档窗口中。我将模式设置为“Entity”,将实体名称设置为“Note”。选中“准备内容”和“可编辑”。 (我已经完成的所有示例,并且能够在这里找到使用NSArrayController。我不需要一个阵列控制器吗?我确实希望能够为同一个应用程序打开多个窗口但我仍然不认为我需要一个arraycontroller?所有的例子都有一个NSTableView和一个添加按钮。这里不需要添加按钮,因为我没有NSTableView。
3)值I的NSTextView绑定将其绑定到“Note Object Controller”,其中包含RepresentObject的控制器键和标题的Model Key Path。
当我运行我的应用程序时,我得到了
[<NSObjectController 0x20004c200> addObserver:<NSTextValueBinder 0x20009eee0>
forKeyPath:@"representedObject.title" options:0x0 context:0x20009f380] was
sent to an object that is not KVC-compliant for the "representedObject" property.
我做错了什么?我想输入文本字段,保存文件,再次打开文本并在那里查看文本。
答案 0 :(得分:4)
[<NSObjectController 0x20004c200> addObserver:<NSTextValueBinder 0x20009eee0> forKeyPath:@"representedObject.title" options:0x0 context:0x20009f380] was sent to an object that is not KVC-compliant for the "representedObject" property.
我做错了什么?
错误消息告诉您出错了什么:您尝试绑定到对象控制器的representedObject
属性,但它没有。绑定到不存在的属性不起作用。
Note是NSObjectController的内容对象,因此您需要绑定到的控制器键:content
。