Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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
Cocoa 构建代码所需的建议_Cocoa_Delegates_Notifications_Nsurlconnection - Fatal编程技术网

Cocoa 构建代码所需的建议

Cocoa 构建代码所需的建议,cocoa,delegates,notifications,nsurlconnection,Cocoa,Delegates,Notifications,Nsurlconnection,背景 我正在编写应用程序中没有UI的部分。它坐在后台看你做什么和你的工作时间 时间数据中不应有重叠时间,也不应有中断。如果存在上述任何一种情况,那么应用程序的某个地方就有一个bug,需要通知我 我想要什么 一个名为JGDataIntegrityController的类,它执行以下操作: 检查数据存储是否存在重复时间。自存储在NSUserDefaults中的上次重复报告日期起扫描 如果发现重复的时间,则生成报告 发送报告 如果发送不成功,则退出。否则继续 删除重复项 在NSUserDefaults

背景

我正在编写应用程序中没有UI的部分。它坐在后台看你做什么和你的工作时间

时间数据中不应有重叠时间,也不应有中断。如果存在上述任何一种情况,那么应用程序的某个地方就有一个bug,需要通知我

我想要什么

一个名为JGDataIntegrityController的类,它执行以下操作:

  • 检查数据存储是否存在重复时间。自存储在NSUserDefaults中的上次重复报告日期起扫描

  • 如果发现重复的时间,则生成报告

  • 发送报告

    如果发送不成功,则退出。否则继续

  • 删除重复项

  • 在NSUserDefaults中更新上次重复的报告日期

  • 对数据中断重复上述步骤

  • 我所拥有的

    我已经创建了一个基类,它完成了发送报告的所有艰苦工作

    JGReportSender具有以下代码:

    -(void)postReport:(NSString *)report {
        NSMutableDictionary *form = // Dictionary Holding Report;
        NSURLRequest *request = [NSURLRequest requestWithURL:@"http://postURL" postForm:form];
        [NSURLConnection connectionWithRequest:request delegate:self];
    }
    
    我被困在哪里

    报告发送后,我该怎么办

    委托方法包括:

    -(无效)连接IDFinishLoading:(NSURLConnection*)连接

    -(void)连接:(NSURLConnection*)连接失败错误:(NSError*)错误

    在发送报告时调用。但是我应该如何与JGDataIntegrityController通信呢

    我的烂主意

    我的想法是在JGReportSender中有一个
    reportStatus
    NSNumber属性。然后,当委托方法被调用时,它会被更新

    reportStatus=1表示“已发送报告正常”

    reportStatus=2表示“发送报告时出现问题”

    然后我可以为JGDataDuplicateReportSender和JGDataBreakReportSender添加一个reportStatus观察员。然后,这将处理报告发送错误或继续

    有什么好主意吗?

    我觉得这是一种非常混乱的方式。我也觉得我忽略了一些非常明显的事情

    有没有什么好办法可以干净利落地做到这一点

    更新

    我完全忘了提及-这将是一个100%的选择加入功能。默认情况下,它将被禁用。它还将有3个级别的隐私-从“发生数据中断”到“此应用程序使用此文档路径激活后发生数据中断”。这些报告也将是匿名的


    我意识到所有的隐私问题——这是为了让我的软件更好,而不是为了我可以监视别人

    至少使用两种方法为报表发送者指定一个
    委托
    属性和协议:
    ReportSenderdSucceed:
    reportSender:failedWithError:
    。报表发送方将通过其
    连接:didFailWithError:
    方法发送后一条消息,并传递它得到的错误对象


    我真的希望你可以选择这个功能。如果不这样做,用户可能会发出大量愤怒/好奇的电子邮件(更不用说在网页上发出“不要使用此应用程序,因为它会打电话回家”的公开警告了)。

    给报告发送者一个
    委托
    属性和协议,至少有两种方法:
    reportSenderDidSucceed:
    reportSender:failedWithError:
    。报表发送方将通过其
    连接:didFailWithError:
    方法发送后一条消息,并传递它得到的错误对象


    我真的希望你可以选择这个功能。如果你不这样做,用户可能会发很多愤怒/好奇的电子邮件(更不用说网页上的“不要使用此应用程序,因为它会打电话回家”的公开警告)。

    如果有人想像Peter建议的那样获得一个关于实现自己的代理的好教程,我发现了一个:


    看看吧。太棒了

    如果有人像Peter建议的那样想要一个关于实现自己的代理的好教程,我发现了这个:


    看看吧。太棒了

    回答得好,彼得。我完全忘了在我的帖子中提到——这将是一个完全选择加入的反馈过程。默认情况下,它将处于关闭状态。此外,我将有一个选择的3个隐私设置的例子将发送给我。也都是匿名的。我会更新我的问题。谢谢你的回答。回答得好,彼得。我完全忘了在我的帖子中提到——这将是一个完全选择加入的反馈过程。默认情况下,它将处于关闭状态。此外,我将有一个选择的3个隐私设置的例子将发送给我。也都是匿名的。我会更新我的问题。谢谢你的catch.Off主题,但不知道该怎么问:你用了什么软件来制作UML图?看起来很圆滑。离题,但不确定如何提问:您使用了什么软件来制作UML图?看起来很圆滑。