背景
我正在编写没有 UI 的应用程序的一部分。它位于后台,监视您的工作并为您的工作计时。
时间数据不应有重叠,时间数据不应有中断。如果存在上述任何一种情况,则应用程序在某处存在错误,需要通知我。
我想要的是
一个名为 JGDataIntegrityController 的类,它执行以下操作:
检查数据存储是否有重复时间。自上次存储在 NSUserDefaults 中的重复报告日期以来的扫描。
如果发现重复的时间,建立一个报告。
发送报告。
如果发送不成功,则退出。否则继续。
删除重复项
更新 NSUserDefaults 中的最后一个重复报告日期
对数据中断重复上述操作。
我有什么
我创建了一个基类来完成发送报告的所有艰苦工作。
类图 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 表示“发送报告问题”。
然后我可以为 JGDataDuplicateReportSender 和 JGDataBreakReportSender 添加一个报告状态观察者。然后这将处理报告发送错误或继续。
有什么好主意吗?
我觉得这是一种非常混乱的方式。我也觉得我忽略了一些非常明显的东西。
任何想法如何以一种简洁的方式做到这一点?
更新
我完全忘了提及 - 这将是 100% 选择加入的功能。默认情况下它将被禁用。它还将具有 3 个级别的隐私 - 从“发生数据中断”到“在此应用程序使用此文档路径激活后发生数据中断”。报告也将是匿名的。
我意识到所有的隐私问题——这是为了让软件变得更好,而不是为了监视别人!