让我们假设我有一个方法:-[myClass getDataForUser:user]
,当它完成时,它调用委托的方法gotData:
,结果出现在我的主类上。如果我对getDataForUser:
进行两次调用,例如:
[myClass getDataForUser:@"user1"];
[myClass getDataForUser:@"user2"];
如何在委托方法中区分这两个调用?
图书馆是MGTwitterEngine,我做的两个电话是-[_engine getDirectMessagesSinceID:1 startingAtPage:1];
和[_engine getSentDirectMessagesSinceID:1 startingAtPage:1];
,委托方法是directMessagesReceived:forRequest:
答案 0 :(得分:1)
为每个调用使用MGTwitterEngine实例,并为每个实例提供不同的委托对象。在每个委托对象中,您可以存储用户标识。设置这些委托对象,以便他们可以接受原始类作为他们的委托。然后你可以最终使用委托gotData:(id)数据forUser:(NSString *)user。不漂亮,但可能会奏效。
答案 1 :(得分:0)
为委托方法添加一个参数:
[delegate gotData:(id)data forUser:(NSString *)user]
还有其他方法,但不是那么简洁
编辑:好的,它在库中,因此无法更改。但是,委托确实有一个for[something]
参数,在本例中为forRequest
。因此,您需要做的就是找到一种将请求与用户名相关联的方法。我建议将它们放在地图中,将request
映射到user
。或者,如果你只有两个,你可以只做几个变量request1, request2
和user1, user2
并将请求和用户存储在适当的变量中,检查哪个id与哪个名称一致(在委托中) ):
if(thisRequest == request1) {
thisUser = user1;
} else {
thisUser = user2;
}