سؤال

هنا هو رمزي:

for (NSManagedObject *object in array) {
    if ([[object valueForKey:@"DueDate"] isLessThan:[NSDate date]]) {
        count++;
        NSLog(@"Looped");
        NSString *test = [[NSString alloc] initWithFormat:@"%@", [object valueForKey:@"DueDate"]];
        NSLog(@"%@", test);
    }
}
NSLog(@"%i", count);
NSDockTile *aTitle = [[NSApplication sharedApplication] dockTile];
[aTitle setBadgeLabel:[NSString stringWithFormat:@"%i", count]];

لسبب ما يضيف هذا الرمز 8 إلى أيقونة قفص الاتهام عندما يجب أن يكون 2

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

المحلول

على أي أساس تدعي أنه يجب أن يكون 2؟ من الواضح أن لديك ثمانية كائنات في الصفيف الذي يكون تاريخ استحقاقه أقل من التاريخ الحالي (الذي تقوم بإنشاء كائن جديد في كل مرة من خلال الحلقة، راجع للشغل).

ما هي فئة قيم هذه الكائنات المدارة DueDate منشأه؟ (لا تنظر إلى النموذج الخاص بك لهذا - إرسال قيم تاريخ الاستحقاق class الرسائل وتسجيل النتائج باستخدام NSLog.) من الممكن أنهم ليسوا nsdates، وأنهم compare: الطريقة هي، بدلا من إلقاء استثناء عندما يطلب منك المقارنة مع NSDate، ببساطة إرجاع هراء.

علاوة على ذلك، لماذا لا تتضمن هذا اختبار أقل من X-X-Date كمسند في طلب الجلب الذي تستخدمه للحصول على هذه الكائنات؟ ثم (بعد التأكد من أن قيم تاريخ الاستحقاق هي NSDates) يمكنك ببساطة استخدام count من الصفيف. هذا يفترض أنك لا تفعل شيئا آخر مع مجموعة نتيجة أكبر خارج الرمز الذي أظهرته، بالطبع.

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