Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 为NSXmlParser使用不同的委托_Iphone_Oop_Delegates_Nsxmlparser - Fatal编程技术网

Iphone 为NSXmlParser使用不同的委托

Iphone 为NSXmlParser使用不同的委托,iphone,oop,delegates,nsxmlparser,Iphone,Oop,Delegates,Nsxmlparser,我想找出设计东西的最佳方法。我正在编写一个iPhone应用程序,大部分时间我都在使用对web服务的异步调用。这意味着我可以设置一个URLConnection,调用start,并让它在数据可用或发生异常时回叫我。这很有效,我认为这是正确的处理方式 例如: 我从web服务请求一个人员列表。结果列表是XMLPerson元素,它将由我的XmlDelegate转换为objective-c“Person”对象 当我调用函数获取person时,我传入一个“PersonResultDelegate”,这是一个协

我想找出设计东西的最佳方法。我正在编写一个iPhone应用程序,大部分时间我都在使用对web服务的异步调用。这意味着我可以设置一个URLConnection,调用start,并让它在数据可用或发生异常时回叫我。这很有效,我认为这是正确的处理方式

例如:

我从web服务请求一个人员列表。结果列表是XMLPerson元素,它将由我的XmlDelegate转换为objective-c“Person”对象

当我调用函数获取person时,我传入一个“PersonResultDelegate”,这是一个协议,其中有一个名为“PersonReceived:(person*)p”的函数。所以,每次我得到一个完整的Person对象,我调用这个方法,一切都很好。因此,我的详细视图(或搜索结果视图)只接收可用的元素

当我需要获得一个以上的特定对象时,问题就出现了。在我的特殊情况下,我需要为一个人安排第一次和最后一次约会。因此,我需要进行两个API调用来获取这两个单一约会对象。每个约会对象都将导致对registered AppointmentResultDelegate的调用,但我如何知道哪个是第一个,哪个是最后一个?我还需要以某种方式处理没有“第一次”或“最后一次”预约的情况,并且代表永远不会被呼叫

正确的设计方法是什么?我是否应该向传递回委托中句柄的初始请求添加一些额外的上下文信息?一段不透明的数据,只对最初打电话的人有意义?我的其他选择是什么

解决方案

实际上,我最后做的只是将一段不透明的数据连同约会一起传递给代表。因此,当我请求约会对象时,我有一个类似以下的方法:

getNextAppointment withDelegate:self withContext:@"next"
getPrevAppointment withDelegate:self withContext:@"prev"
这样,当代表接到电话时,我就知道正在进行什么约会

“每个约会对象都将导致对已注册的AppointmentResultDelegate的调用,但我如何知道哪个是第一个,哪个是最后一个?”


通过查看您接收这些回调的顺序。或者通过查看xml数据中的某些值。像序列或数据。我当然不知道你的数据。

好吧,那么我可能只是想得太多了。:-)还有,但我需要在没有这样的预约的时候处理这个案子。没有为某个特定的人预约,我会我只会用nil调用PersonResultDelegate。。但我不知道哪个是哪个。我认为在最初传入的回调中添加一些id是可行的。。