【问题标题】:Cocoa Bindings - why do I get these characters?Cocoa Bindings - 为什么我会得到这些字符?
【发布时间】:2012-06-28 11:47:39
【问题描述】:

我正在尝试学习 Cocoa 绑定,并有一个简单的应用程序,其中包含标题、名字和姓氏。

这是我运行应用程序时的结果截图:

我不明白为什么我的名字和姓氏都是空字符串。

一切都是使用绑定构建的 - 没有代码。

绑定如下所示:

任何帮助将不胜感激...谢谢!

编辑 - 这里是名字的属性值:

这里是托管对象子类的代码...

@interface TestEntity : NSManagedObject

@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) NSString * firstname;
@property (nonatomic, retain) NSString * lastname;

@end


@implementation TestEntity

@dynamic title;
@dynamic firstname;
@dynamic lastname;

- (void) awakeFromInsert
{
    NSLog(@"%s", __FUNCTION__);

    NSString * baseValue = @" ";
    [self setValue: baseValue  forKey: @"firstname"];

} // awakeFromInsert

【问题讨论】:

    标签: cocoa core-data cocoa-bindings


    【解决方案1】:

    您将一个仅显示单个值的控件绑定到“arrangedObjects.yourKey”。这提供了一个集合。如果您使用po someCollection 在调试器控制台中打印相同的内容,您会看到相同的格式。

    你想要“selection.yourKey”。这里“选择”的意思是“在数组控制器中选择了任何对象”,其余的键路径都植根于该对象。

    您可能习惯于在表格视图中使用“arrangedObjects”,其中一列(本质上是垂直堆叠字段的数组需要一个排序的集合。这对于您的左侧表格(“主”视图) 但您的右手控件(“详细”视图)取决于其选择。

    我希望这会有所帮助。

    【讨论】:

    • 谢谢 Joshua,我试过了——你说得对——空值不存在,但项目(名字和姓氏)没有正确绑定到实体。这样当 Title 为 1 时,我输入一个名称,当我输入 Title 2 时,名称字段保持...
    • 我不确定你在说什么。为什么只编辑标题字段时名称字段要更改?如果名称字段取决于您没有说的标题,则这需要额外的代码。如果你想要一个新的项,单击添加按钮(应该选择新添加的项)并编辑标题/名字/姓氏。
    • 实体属性为title、first和last name。所以当我按下 + 时,我希望文本字段被清除..
    • 我将阵列控制器与文件所有者绑定> managedobjectcontext。这是你的意思吗?
    • 有人要求我将其移至聊天。无论如何你可以用我应该寻找的截图来更新你的答案吗?
    【解决方案2】:

    在您的模型中,名字和姓氏可以为空且没有默认值。取消选中每个属性的 can be null 复选框。

    【讨论】:

    • 谢谢 Fabrice.. 我已经修改了问题以显示“名字”的属性值。我在哪里设置“可以为空”?谢谢大卫
    • 哇。可选复选框。取消选中它。你会得到一个空字符串而不是 null。
    猜你喜欢
    • 2013-03-08
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 2013-07-06
    • 2012-03-13
    相关资源
    最近更新 更多