背景
我正在编写一个没有用户界面的应用程序部分。它位于背景中,观察你做什么,并为你的工作安排时间。
时间不应该重叠,时间数据也不应该有中断。如果有这两种情况,应用程序的某个地方有一个bug,我需要得到通知。
我想要什么
一个名为JGDataIntegrityController的类,它执行以下操作:
-
检查数据存储是否重复。自上次重复报告日期存储在nsuserdefaults后扫描。
-
如果发现重复时间,则生成报告。
-
发送报告。
如果发送失败,则退出。否则继续。
-
删除重复项
-
更新nsuserdefaults中的上次重复报告日期
-
对数据中断重复上述步骤。
我得到了什么
我已经做了一个基本类,它完成了发送报告的所有艰苦工作。
Class Diagram http://synapticmishap.co.uk/ReportClasses.jpg
JGReportsender具有以下代码:
-(void)postReport:(NSString *)report {
NSMutableDictionary *form = // Dictionary Holding Report;
NSURLRequest *request = [NSURLRequest requestWithURL:@"http://postURL" postForm:form];
[NSURLConnection connectionWithRequest:request delegate:self];
}
我被困的地方
报告发出后我该怎么办?
委托方法:
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError*)error
在发送报告时调用。但我应该如何与JGDataIntegrityController通信?
我的废话
我的想法是
reportStatus
jgreportsender中的nsnumber属性。然后,当调用委托方法时,将更新该方法。
reportstatus=1表示“报告发送正常”。
reportstatus=2表示“发送报告时出现问题”。
然后我可以为jgdataDuplicateReportSsender和jgdataBreakReportSsender添加一个ReportStatus观察器。这将处理报告发送错误或继续。
有什么好主意吗?
我觉得这是一种非常混乱的方式。我也觉得我忽略了一些非常明显的事情。
有什么办法可以用一种整洁的方式来做到这一点吗?
更新
我完全忘了提-这将是一个100%的选择加入功能。默认情况下,它将被禁用。它还具有三个隐私级别-从“发生数据中断”到“此应用程序使用此文档路径激活后发生数据中断”。报告也将是匿名的。
我意识到所有的隐私问题-这是为了让软件更好,而不是为了监视别人!