ios Xcode 6 Bug: فئة غير معروفة في ملف واجهة منشئ




xcode6 interface-builder (24)

قمت بالترقية إلى Xcode 6 beta 4 والآن يتعطل My apply مع الرسالة

فئة غير معروفة X في ملف واجهة منشئ.

يتعطل ذلك لأنه من المفترض ألا يتمكن Xcode من العثور على فصولك المخصصة التي قمت بربطها في لوحة العمل الخاصة بي ، ولكنه يوضح أنها مرتبطة بشكل صحيح في واجهة Xcode.

أنا كل شيء إيجابي يرتبط بشكل صحيح. قد يكون الخيار الآخر الوحيد هو حذف ملف لوحة العمل بأكمله والبدء من الصفر لأنه قد يكون تالفًا بطريقة ما.

تحرير: وأود أيضا أن أضيف أنني حاولت تنظيف ، وإعادة محاكي ، العبث مع مراحل البناء إلخ. لا شيء من هذا يعمل.


كان الحل الخاص بي لإزالةobjc من تعريف فئة مخصص.


تحقق مما إذا كان صفك يتضمن العضوية المستهدفة الصحيحة.


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

باستخدام XCode 4 ، في Project Navigator ، حدد الملف .m الذي يحتوي على الفئة التي تشكو منها

انتقل إلى View-> Utilities-> Show File Inspector (سيظهر هذا File Inspector إلى اليمين ، مع ذلك .m-info)

افتح المقطع "العضوية الهدف" وتأكد من تحديد الهدف الخاص بك لهذا الملف .m

عندما أضفت ملف .m إلى مشروعي ، لم يضفه إلى الهدف الافتراضي لسبب ما وتسبب في حصول الخطأ الذي ذكرته.


إجابتي: تعيين وحدة نمطية مخصصة مساوية لاسم Pod المخصص (في المثال الخاص بي - اسم الفئة المخصص) كما هو موضح في لقطة الشاشة المرفقة

هذا الحل لحالة محددة : لفئات العرض المخصصة من إطار Pod (أو Carthage ).

البنية التحتية: XCode8 ، Swift3


يمكن أن يحدث هذا في أي Xcode فوق 6.0. حدث لي بعد إعادة تسمية بعض فصول ViewController في مشروع سويفت (ولكن أعتقد أنه سيحدث مع Obj-C أيضا). كل ما عليك فعله هو فتح أداة إنشاء الواجهة ، انتقل إلى Identity Inspector of ViewController الذي تمت إعادة تسمية الصف الخاص به ، وحدد الفئة ثم اضغط على Enter. سيؤدي ذلك إلى إعادة تعيين الفئة التي تمت إعادة تسميتها إلى ViewController المحدد وإعادة تعيين قيمة الوحدة النمطية التي يتم فقدها بعد إعادة تسمية الفئة.

تحديث لـ Xcode 8.1 (ربما 8.0 أيضًا):

Xcode 8.1 فقط تعطل. ببساطة وتعطل فقط ولا تطبع أي شيء. كنت أطارد هذا الانهيار الوهمي لمدة ساعة فقط لأكتشف أن هذا هو الشيء نفسه - فئة غير مخصصة في البكالوريا الدولية. إذا كنت تحصل على بعض الحوادث الوهمية ، فقم بالتحقق مرة أخرى من IB للدروس غير المخصصة أولاً.


لقد واجهت هذه المشكلة في Xcode 6.1 عندما أزلت Main.storyboard ، وملف ViewController وفئات ViewController الافتراضية من مشروعي.

Info.plist إدخالات Launch Screen File Main Interface Info.plist من Info.plist


هذا العمل بالنسبة لي ..

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


في بعض الأحيان غاب Xcode customModule="AppName" customModuleProvider="target"

لإصلاحه ، افتح لوحة العمل كمصدر شفرة واستبدل هذا السطر:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
sceneMemberID="viewController">

الى هذا:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
 customModule="AppName" customModuleProvider="target" sceneMemberID="viewController">

كان الحل مختلفًا بالنسبة لي. تحتاج إلى إضافة .m للفصل إلى مرحلة بناء المصادر المجمعة للهدف.

أتمنى أن يساعدك هذا!


أنا غوغلد في كل مكان لهذا. لا يعمل أي من الإجابات بالنسبة لي حتى التقيت 1 المتأنق الذي طلب مني نقل مجلد المشروع إلى سطح المكتب. انها مجرد عمل تلقائيا. على ما يبدو إذا كان لديك مجلد المشروع إلى عميق في العديد من المجلدات ، وكسر XCODE في الواقع.


في حالتي ، لم يكن للفئة المشار إليها في لوحة العمل / xib مجموعة الأهداف المستهدفة .

لإصلاح ، .m ملفات .h و. .m بتلك الفئة نفس العضوية المستهدفة مثل الفصول الأخرى.


أحيانًا يفقد جهاز التحكم الذي تقدمه العضوية المستهدفة من التطبيق الحالي. في هذه الحالة ، لن يؤدي الضغط على Enter في حقل "الوحدة النمطية" إلى فعل أي شيء. انتقل إلى وحدة التحكم وتأكد من تعيين العضوية المستهدفة على التطبيق الحالي.


اختيار Module مناسبة لبلدي Custom Class الأولى تحل هذه المشكلة.

ها هو :


حدد ملف صفك غير المعروف ، علامة التبويب مفتش الملفات المفتوحة ، تحقق من اسمك المستهدف في Target Membership . ها أنت ذا.


ما قالهgfrs صحيح ، تحتاج إلى ضبط الوحدة. ومع ذلك ، واجهت مشكلة مرة واحدة ولم يتم إدراج صفي في القائمة المنسدلة للصف. في النهاية أزلت الملف السريع ، وأعدت تشغيل Xcode وأعدت إنشاء الملف. أخيراً تم إدراج الفصل ويمكن استخدامه في Storyboard.

ألقِ نظرة أيضًا على هذه الإجابة ، التي تبدو وكأنها حل المشكلة "الحقيقية" التي واجهتها.


واجهت المشكلة عندما قمت بنقل القصة المصورة من مشروع سويفت إلى مشروع Objective-c ، مع ملاحظة إجابة vvkuznetsov ، تبين أن المشروعين يستخدمان نفس المعرّف. أنا "المنتج -> تنظيف" واضغط على مفتاح Enter في حقل نصوص الوحدة النمطية والفئة. القضية ذهبت بعيدا.


الحل الخاص بي (Xcode 8.1 Swift 3.0):

غير معروف فئة xxx في ملف واجهة منشئ.

افتح StoryBoard كقانون مصدر وابحث عن xxx . إزالة السمة التي تحتوي على قيمة xxx . بناء وتشغيل.


كان لي نفس المشكلة مع الإصدار Xcode 6.1 (6A1052d). أعتقد أن المشكلة ستظهر إذا أعدت تسمية تطبيقك / برنامج Xcode.

كان الحل الخاص بي لإضافة اسم الوحدة النمطية في أداة إنشاء الواجهة يدويًا.


ما يعمل فقط بالنسبة لي هو في الواقع إضافة اسم الوحدة النمطية إلى ملف xib ...

Sooo ، ملفات xib تبدو كالتالي:

mymodule.MyViewController.xib (Module being the name of the proyect, usually)

في رأيي هذا الحل الرهيب ، لكن من المفترض أن أبل تريد منا أن نفعل ذلك الآن.

يعرض هذا السؤال ثلاثة أعمال محتملة تعود إلى الإصدار التجريبي 4 ... على ما يبدو لم تكن Apple مفيدة جدًا في هذه الحالة وفقًا لبعضها لأنها تسميها "العمل على النحو المنشود".


كان لي نفس المشكلة.

في حالتي ، لم تكن Xcode تضيف صفها المخصص إلى: Target> Build Phase> Compile Sources.

لذا أوصيك بالتحقق من وجود CustomClass.m الخاص بك.

آمل أن يكون هذا يساعدك.


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


في حالتي ، قمت بإضافة إشارة -ObjC إلى Other Linker Flags في إعدادات المشروع لجعلها تعمل. كما حاولت مع -all_load العلم وعملت جيدا أيضا.


لقد واجهت هذه المشكلة في Xcode 8 ، لحلها اضطررت إلى تعديل لوحة العمل في محرر النصوص.

بشكل عام ، ابحث عن عنصر التحكم الخاص بك وقم بإزالة customModule و customModuleProvider من عنصر التحكم.

خدعة بالنسبة لي.


لقد قمت بحل هذه المشكلة من خلال فتح ملف لوحة العمل الخاصة بي ككود المصدر واستخدام الأمر F للبحث عن الفئة غير المعروفة وحذف الفئة المخصصة المرتبطة بها.





uistoryboard