【发布时间】:2011-02-10 20:52:29
【问题描述】:
我正在 Cocoa 中制作一个简单的基于文档的应用程序。这个应用程序的每个文档基本上应该管理一个日期和注释数组,因此每条记录都是一个日期和一个注释(文本视图)。此外,每个文档都受密码保护。
为此,我创建了一个名为 HistoryElement 的核心数据实体(包含日期和注释属性),我还创建了一个设置实体,它应该只有一条记录,其中包含打开文件的密码(我没有找到更好的方法,有吗?密码与每个文件绑定,所以我不能使用首选项,因为它不是全局应用程序密码)。
我有一个首选项选项卡,其中包含一个密码文本字段,该字段绑定到设置实体的密码属性。
好的...现在的问题是:当我创建一个新文档时,设置实体上没有记录,所以我希望以编程方式添加一个,以便用户可以放置(如果它想保护它的文件)密码文本字段中的密码。
相反,如果我打开一个现有文件,它应该会发现设置实体的记录已经添加,它不应该再次创建它,而是密码文本字段应该使用这个。
我尝试了很多方法,但我无法做到。例如,我试过这样:
if([[settingsArrayController arrangedObjects] count] == 0) {`
NSLog(@"Init settings");`
[settingsArrayController add:self];`
}
它似乎在我创建新文档时添加了一条新记录,但是如果我在密码文本字段中输入密码然后保存文档,当我再次打开文档时[[settingsArrayController arrangedObjects] count] 返回 @ 987654323@ 又创造了一个新纪录……
我该怎么做?有更好/简单/优雅的方法来使用密码保护文档吗?
【问题讨论】:
标签: objective-c cocoa macos core-data cocoa-bindings