我正在阅读一本书,并在示例代码中展示了如何将NSTextField的值分配给另一个NSTextField,如下所示:
self.theStory.text = self.theTemplate.text;
当我尝试不使用Dot Notation时也这样做:
[[self theStory]text] = [[self theTemplate]text];
我收到以下错误: 表达式不可分配。
我是Objective-C的新手,我们将不胜感激。
答案 0 :(得分:0)
这样的事情:
[[self theStory] setText:[[self theTemplate]text]]
答案 1 :(得分:0)
当您使用括号而不是点时,您需要使用setter方法的全名,然后删除=
。
[[self theStory] setText:[[self theTemplate] text]];
根据我的经验,Dot符号最好用于设置或获取状态,通过编写或读取属性或键路径(键路径是一系列方法,例如self.datamodel.members.count
)。当您执行某种操作时,括号表示法是更好的选择。在某些情况下,可以对没有参数的方法使用点表示法,但这会使代码混乱。例如,如果我有一个NSTimer
实例myTimer
,我会使用[myTimer fire]
,而不是myTimer.fire
。
答案 2 :(得分:0)
那是因为你不能这样做。点表示法有两个等价物,“名称”形式和“setName:”形式。您使用[[self theStory] setText:[[self theTemplate] text]];
。