سؤال

خلفية

أنا أكتب جزءا من التطبيق الخاص بي الذي لا يوجد لديه UI. يجلس في الخلفية مشاهدة ما تفعله وتوقيت عملك.

يجب ألا يكون هناك أوقات متداخلة، ويجب أن يكون هناك فترات راحة في البيانات الزمنية. إذا كان هناك أي من هذه الأشياء، فإن التطبيق لديه خطأ في مكان ما، ويحتاج إلى إخطار.

ماذا اريد

فئة تسمى jgdataintegreitycontroller التي تفعل ما يلي:

  1. تحقق من مخزن البيانات لأوقات مكررة. مسح منذ آخر تقرير مكرر آخر مخزن في NSUSERDEFAULTS.

  2. إذا تم العثور على أوقات مكررة، بناء تقرير.

  3. إرسال التقرير.

    إذا كان الإرسال غير ناجح، ثم الخروج. متابعة خلاف ذلك.

  4. إزالة التكرارات

  5. قم بتحديث آخر تاريخ تقرير مكرر في NSUSERDEFAINTS

  6. كرر ما سبق لكسر البيانات.

ما حصلت عليه

لقد صنعت فئة أساسية تقوم بكل الأعمال الشاقة في إرسال التقرير.

مخطط الفصل 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

يتم استدعاء عندما تم إرسال التقرير. ولكن كيف يجب أن أتواصل مع jgdataintegreitycontroller؟

فكرة حماقة بلدي

فكرتي هي أن يكون reportStatus ممتلكات NSNumber في JGReportsender. ثم عندما تسمى أساليب المفوض، يتم تحديث هذا.

ReportStatus = 1 تعني "إرسال تقرير موافق".

ReportStatus = 2 تعني "تقرير إرسال المشكلات".

ثم يمكنني إضافة مراقب عن ReportStatus ل JGDATADUPLICATEREPortsender و Jgdatabreakreportsender. هذا من شأنه بعد ذلك التعامل مع خطأ إرسال التقرير أو متابعة.

أي أفكار جيدة؟

أحصل على الشعور بأن هذه طريقة فوضوية حقا للقيام بذلك. أشعر أيضا بأنني أطل شيئا واضحا حقا.

أي أفكار كيفية القيام بذلك بطريقة أنيقة؟

تحديث

لقد نسيت تماما أن أذكر - سيكون هذا ميزة 100٪ في الميزة. سيتم تعطيله بشكل افتراضي. سيكون لديها أيضا 3 مستويات من الخصوصية - من "حدوث استراحة البيانات" من خلال "استراحة البيانات حدثت بعد أن كان هذا التطبيق نشطا مع مسار المستند هذا". والتقارير ستكون مجهولة الهوية.

أنا أدرك بجميع مخاوف الخصوصية - وهذا أمر كذلك يمكنني أن أجعل البرمجيات أفضل، وليس كذلك يمكنني التجسس على الناس!

هل كانت مفيدة؟

المحلول

إعطاء تقرير المرسل أ delegate الممتلكات والبروتوكول، مع طريقتين على الأقل: reportSenderDidSucceed: و reportSender:failedWithError:. وبعد سوف يرسل المرسل التقرير الرسالة الأخيرة من connection:didFailWithError: الطريقة، تمر على طول كائن الخطأ الذي حصلت عليه.

آمل أن أقوم بإجراء هذه الميزة اختيارية. نتوقع الكثير من البريد الإلكتروني الغاضب / الغاضب من المستخدمين (ناهيك عن التحذيرات العامة من "لا تستخدم هذا التطبيق لأن الهواتف المنزلية" على صفحات الويب) إذا لم تفعل ذلك.

نصائح أخرى

مجرد ملاحظة سريعة ليقول ما إذا كان أي شخص يريد برنامج تعليمي جيد على تنفيذ مندوبيك الخاص كما يقترح بيتر أن أفعل ذلك، وجدت هذا واحد:

http://cocoadevcentral.com/articles/000075.php.

تحقق من ذلك. انها ممتازة!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top