将对象添加到NSDictionary

时间:2012-02-28 18:44:09

标签: objective-c ios nsdictionary

我想用UITextFields中的文本填充NSDictionary。这是我尝试的

[self delegate]populate:[NSDictionary dictionaryWithObjectsAndKeys:
                                 [self.username.text], @"username",
                                 [self.password.text], @"password"
                                 nil];

但我得到了预期的标识符。 这有什么不对?为什么不能直接传递[self。*]?

我也试过

[self delegate]populate:[NSDictionary dictionaryWithObjectsAndKeys:
                                 [NSString stringWithFormat:@"%@", [self.username.text]], @"username",
                                 [NSString stringWithFormat:@"%@", [self.password.text]], @"password"
                                 nil];

仍然无法正常工作

2 个答案:

答案 0 :(得分:3)

[self.username.text]语法无效。

消息发送语法为[object message]。点语法为object.property。由于属性访问通常会产生对象,因此您可以将它们组合在一起,但仍然需要有一个消息部分。如果您只是将点语法放在括号中,那么您将错过消息部分:[object.property <missing message>]

将其更改为self.username.text(无括号)或[self.username text]

正如bdesham指出的那样(我认为这只是一个错字),你在整个片段周围都缺少括号。 [self delegate]是您要向其发送邮件的对象populate

[[self delegate] populate:<another message send here, to NSDictionary>];

答案 1 :(得分:1)

试试这个:

[[self delegate] populate:[NSDictionary dictionaryWithObjectsAndKeys:
                             [self.username.text], @"username",
                             [self.password.text], @"password"
                             nil]];

您似乎在整个邮件中遗漏了[ ]