سؤال

إذا حصلت على نتيجة رمز خطأ من دالة Cocoa، فهل هناك أي طريقة سهلة لمعرفة ما يعنيه ذلك (بخلاف البحث في جميع ملفات ‎.h الموجودة في حزم إطار العمل)؟

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

المحلول

يجب عليك أن تنظر إلى <Framework/FrameworkErrors.h> رأس لأي إطار عمل تأتي منه الطريقة التي تستخدمها والتي تعرض خطأً.

على سبيل المثال، أ NSError في مجال الكاكاو الذي تحصل عليه من إحدى الطرق الموجودة في إطار عمل المؤسسة، سيكون له code الممتلكات الموصوفة في <Foundation/FoundationErrors.h> header.وبالمثل مع AppKit و <AppKit/AppKitErrors.h> والبيانات الأساسية و <CoreData/CoreDataErrors.h>.

أيضًا، إذا قمت بطباعة وصف NSError في مصحح الأخطاء، يجب أن يتضمن ليس فقط مجال الخطأ ورمزه، ولكن أيضًا اسم ثابت رمز الخطأ الفعلي حتى تتمكن من البحث عنه في مرجع واجهة برمجة التطبيقات (API).

نصائح أخرى

الأقسام الخاصة بـ "نطاقات الخطأ" و"رموز الخطأ" في أجهزة Apple دليل البرمجة للتعامل مع الأخطاء معالجة هذا بشكل جيد إلى حد معقول.عليك القيام بما يلي:

  1. قم بتسجيل الخطأ، مع ملاحظة كل من مجال الخطأ (سلسلة يمكن قراءتها بواسطة الإنسان / يمكن استخدامها في Google تخبرك بمكان البحث عن تعريفات رمز الخطأ) و خطا بالكود نفسه (عدد صحيح)

  2. تعرف على Google (أو اقرأ من القائمة أدناه) واكتشف اسم ملف (ملفات) الرأس حيث تم تحديد رموز الخطأ لمجال الخطأ هذا

  3. ابحث في ملف (ملفات) الرأس عن رمز الخطأ الذي حصلت عليه.يجب أن تجد كلا الاسمين الثابتين لرمز الخطأ (مثل ENOMEM) ، ونأمل أيضًا أن يكون هناك تعليق توضيحي (مثل /* Cannot allocate memory */) شرح معنى الخطأ.إذا لم يكن هناك تعليق، والاسم الثابت ليس واضحًا بذاته، فما عليك سوى البحث في Google عن الاسم الثابت وستجد على الأرجح الوصف المناسب.

بعض ملفات الرأس لنطاقات الأخطاء الرئيسية:

NSCocoaErrorDomain

تنتشر إعلانات رمز الخطأ عبر ثلاثة ملفات رأس:

  • <Foundation/FoundationErrors.h> (رموز خطأ الأساس العامة)
  • <AppKit/AppKitErrors.h> (رموز خطأ AppKit العامة)
  • <CoreData/CoreDataErrors.h> (رموز خطأ البيانات الأساسية)

NSURLErrorDomain

يفحص NSURLError.h

NSXMLParserErrorDomain

يفحصNSXMLParser.h

NSMachErrorDomain

يفحص /usr/include/mach/kern_return.h

NSPOSIXErrorDomain

يفحص /usr/include/sys/errno.h

NSOSStatusErrorDomain

يفحص

/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h

أيضًا، من المفترض أن يكون NSError الخاص بـ Cocoa قابلاً للعرض للمستخدم النهائي.إذا قمت بتسجيله للتو، فيجب أن يكون قابلاً للقراءة.

إذا كنت تتحدث عن OSStatus الخاص بـ Carbon وما شابه، MacErrors.h.

بالنسبة لأخطاء NSError، قم بإضافة سطر من التعليمات البرمجية:

NSError     *error;

// ... Some code that returns an error

// Get the error as a string
NSString *s = [error localizedDescription];

// Observe the code for yourself or display to the user.   
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top