NSDictionary在类之间传递

时间:2011-07-05 22:43:32

标签: iphone objective-c

我正在尝试在两个类之间传递NSMutableDictionary对象。我尝试添加一个返回字典的方法无济于事。

-(NSMutableDictionary*) getResponse
{
return response; //where response is a dictionary that has keys and objects assigned
}

但即使这样,字典也无法从其他类中拉出来;它返回“null”。

2 个答案:

答案 0 :(得分:2)

  

我尝试添加一种无法恢复的方法。

-(NSMutableDictionary*) getResponse
{
return response;
}

那是因为这个方法返回一个字典。对于返回自身的方法,它必须向对象self询问其方法选择器的实现,或者要求Objective-C运行时返回Method结构。

但这不是你真正想做的事,是吗?

如果你的意思是这个方法返回响应字典,那就是它的确如此。这是正确的(除了它的名字,正如我已在我对该问题的评论中所解释的那样)。

  

......但即使这样,也无法从其他类中提取数据;

该方法不声称返回数据对象;它声称返回一个字典对象。如果它确实返回了一个数据对象,那将是一个错误。

  

...它返回无效。

不,它返回NSMutableDictionary *void是一种类型;没有其他背景,这是有道理的。

如果你的意思是它返回nil(指向没有对象的指针),那么这意味着你没有要返回的响应字典。在具有响应之前,不要询问此对象。

您可能希望使想要响应的对象成为保存响应的对象的委托,并让响应持有者在响应进入时向其委托发送消息。您甚至可以在其中包含响应信息;替代方案是响应持有者只传递自己,并且委托在其委托方法的实现中向响应持有者询问响应字典。

更多信息:

答案 1 :(得分:0)

如果您的方法返回nil,那是因为您的response变量为零。在这一点上可能没有初始化。尝试在getResponse方法中执行NSLog(@"Response: %@", response);。查看控制台是否打印(null)或有效的NSMutableDictionary对象。