যদিও ইন্টারফেস বিল্ডার এ সম্পর্কে সচেতন MyClass
, অ্যাপ্লিকেশন শুরু করার সময় আমি একটি ত্রুটি পেয়েছি।
এটি যখন MyClass
কোনও লাইব্রেরির অংশ হয় তখন ঘটে থাকে এবং আমি সরাসরি অ্যাপ্লিকেশন টার্গেটে ক্লাসটি সংকলন না করলে তা ঘটে না।
যদিও ইন্টারফেস বিল্ডার এ সম্পর্কে সচেতন MyClass
, অ্যাপ্লিকেশন শুরু করার সময় আমি একটি ত্রুটি পেয়েছি।
এটি যখন MyClass
কোনও লাইব্রেরির অংশ হয় তখন ঘটে থাকে এবং আমি সরাসরি অ্যাপ্লিকেশন টার্গেটে ক্লাসটি সংকলন না করলে তা ঘটে না।
উত্তর:
" ইন্টারফেস বিল্ডার ফাইলটিতে অজানা শ্রেণি মাইক্লাস। " ত্রুটি থাকা সত্ত্বেও, রানটাইম এ মুদ্রিত ত্রুটি থাকা সত্বেও , এই ইস্যুটির ইন্টারফেস বিল্ডারের সাথে কোনও সম্পর্ক নেই, বরং লিঙ্কারের সাথে, যা কোনও শ্রেণিতে লিঙ্ক করছে না কারণ কোনও কোডই সরাসরি এটি ব্যবহার করে না।
.Nib ডেটা (.xib থেকে সংকলিত) রানটাইমের সময় লোড করা হয়, MyClass
স্ট্রিং ব্যবহার করে রেফারেন্স করা হয়, তবে লিঙ্কার কোড কার্যকারিতা বিশ্লেষণ করে না, কেবল কোড অস্তিত্ব, তাই এটি এটি জানে না। যেহেতু অন্য কোনও উত্স ফাইলগুলি এই শ্রেণীর রেফারেন্স দেয় না, এক্সিকিউটেবল করার সময় লিঙ্কার এটি অস্তিত্বের বাইরে থেকে অনুকূল করে তোলে। সুতরাং যখন অ্যাপলের কোড এই ধরণের ক্লাস লোড করার চেষ্টা করে তখন এটি এর সাথে যুক্ত কোডটি খুঁজে পায় না এবং সতর্কতাটি মুদ্রণ করে।
ডিফল্টরূপে, অবজেক্টিভ-সি টার্গেটগুলিতে -all_load -ObjC
ডিফল্ট অনুসারে পতাকা সেট করা থাকে, যা সমস্ত চিহ্নকে রাখে। তবে আমি একটি সি ++ টার্গেট দিয়ে শুরু করেছি, এবং এটি ছিল না। তবুও, আমি এর চারপাশে একটি উপায় পেয়েছি, যা লিঙ্কারটিকে আক্রমণাত্মক রাখে।
আমি যে হ্যাকটি মূলত ব্যবহার করছিলাম তা হ'ল একটি খালি স্ট্যাটিক রুটিন যুক্ত করা:
+(void)_keepAtLinkTime;
যা কিছুই করে না, তবে আমি একবার ফোন করব যেমন:
int main( int argc, char** argv )
{
[MyClass _keepAtLinkTime];
// Your code.
}
এটি লিঙ্কারটিকে পুরো ক্লাস রাখতে বাধ্য করবে এবং ত্রুটিটি অদৃশ্য হয়ে যাবে।
যেমন jlstrecker মন্তব্যগুলিতে উল্লেখ করেছেন, আমাদের আসলে কোনও _keepAtLinkTime
পদ্ধতি যুক্ত করার দরকার নেই । কেবল একটি বিদ্যমানকে কল করা, যেমন:
[MyClass class];
কৌতুকটি করে (যতক্ষণ আপনি একটি থেকে উদ্ভূত হন NSObject
)
অবশ্যই, আপনি আপনার কোডের যে কোনও স্থানে এটি কল করতে পারেন। আমার ধারণা এটি এমনকি অ্যাক্সেসযোগ্য কোডেও হতে পারে। ধারণাটি হ'ল লিঙ্কারটিকে এমন MyClass
কোথাও ব্যবহার করা হয় যাতে এটির অপ্টিমাইজ করার ক্ষেত্রে এত আক্রমণাত্মক না হয় thinking
দ্রুত সংজ্ঞা দেখুন। ওভাররাইড করতে ভুলবেন না init(coder aDecoder: NSCoder)
। উদ্দেশ্য নিয়ামক এর উদ্দেশ্য- সি সংজ্ঞা। এবং, একটি নাশপাতি গাছে একটি নিব।
আপনি যেখানে আপনার ক্লাসটি বেছে নেবেন সেখানে নিব বিশদ পরিদর্শকের মডিউল নাম যুক্ত করুন।
MyClass
। শুধু একটি পদ্ধতি তা থেকে উত্তরাধিকারী কল NSObject
মত +class
।
MyClass.m
ফাইল পরিদর্শকের টার্গেট সদস্যতা বিভাগের সমস্ত প্রয়োজনীয় লক্ষ্যগুলি পরীক্ষা করতে পারেন ।
লরার পরামর্শ অনুসারে আমি এটি ঠিক করেছি তবে আমার ফাইলগুলি পুনরায় তৈরি করার দরকার নেই।
প্রজেক্ট ন্যাভিগেটরে এক্সকোড ৪ ব্যবহার করে, .m ফাইলটি নির্বাচন করুন যাতে এটির অভিযোগ রয়েছে এমন ক্লাসটি রয়েছে
দেখুন-> ইউটিলিটিস-> ফাইল ইন্সপেক্টর দেখান
( এটি .m-ফাইল তথ্য সহ ফাইল ইন্সপেক্টরটি ডানদিকে প্রদর্শিত হবে)
লক্ষ্য সদস্যপদ বিভাগটি খুলুন এবং নিশ্চিত করুন যে আপনার লক্ষ্যটি এই .m-ফাইলের জন্য নির্বাচিত হয়েছে
আমি যখন আমার প্রজেক্টে আমার .m ফাইল যুক্ত করেছি, এটি কোনও কারণে এটি আমার ডিফল্ট লক্ষ্যবস্তুতে যুক্ত হয়নি এবং এটি আপনাকে উল্লিখিত ত্রুটিটি পেয়েছিল।
ইন্টারফেস বিল্ডারের সাথে এর আসলে কোনও সম্পর্ক নেই, এখানে যা ঘটছে তা হ'ল এক্সকোড দ্বারা প্রতীকগুলি আপনার স্থির লাইব্রেরি থেকে লোড করা হচ্ছে না। এই সমস্যাটি সমাধান করার জন্য আপনাকে প্রকল্প কী (এবং সম্ভবত লক্ষ্য) বিল্ড সেটিংস কীতে -all_load -ObjC
পতাকা যুক্ত করতে হবে Other Linker Flags
।
যেহেতু অবজেক্টিভ-সি ক্লাসে কেবল একটি প্রতীক তৈরি করে, আমাদের অবশ্যই লিঙ্কারকে -ObjC পতাকা ব্যবহার করে ক্লাসের সদস্যদের লোড করতে বাধ্য করতে হবে, এবং আমাদের অবশ্যই আমাদের স্থির লাইব্রেরি থেকে -all_load
লিংক পতাকা যুক্ত করে আমাদের সমস্ত বস্তুর অন্তর্ভুক্তিকে জোর করতে হবে । আপনি যদি খুব শীঘ্রই এই পতাকাগুলি এড়িয়ে যান তবে আপনি ত্রুটিতে চলে যাবেন unrecognized selector
বা আপনি এখানে যেমন পর্যবেক্ষণ করেছেন তেমন অন্যান্য ব্যতিক্রমও পাবেন।
-ObjC
পতাকাটি আমার ক্ষেত্রে এটি স্থির করেছে।
-ObjC
সমস্যা সমাধানের জন্য ব্যবহার করা যথেষ্ট ভাল।
আমি আজ সুইফট ব্যবহার করে এই সমস্যায় পড়েছি।
আমি একটি বর্গ পরিবর্তিত Model.h + Model.m
একটি থেকে Model.swift
। এই অবজেক্টটি ইন্টারফেস বিল্ডারে এর সাথে ব্যবহৃত হয়েছিল class = Model
।
আমি অবজেক্টটি প্রতিস্থাপনের সাথে সাথে ক্লাস আর লোড করা যাবে না।
আমাকে যা করতে হয়েছিল তা হ'ল আইবিতে ক্লাসের রেফারেন্স পরিবর্তন করা:
Class = Model
Module =
প্রতি
Class = Model
Module = <TARGETNAME>
আপনি <TARGETNAME>
বিল্ড সেটিংসটিতে পাবেন। এটি আপনার নাম উত্পন্ন সুইফট-শিরোনামে প্রদর্শিত হবে:#import "TARGETNAME-Swift.h"
Module
নামটি ঠিক সেখানেই ড্রপ ডাউনে ছিল। এটি আমার অ্যাপের নাম ছিল।
"প্রকল্পের নাম" এ যান, এটিতে ক্লিক করুন, এবং তারপরে "বিল্ড পর্যায়সমূহ" ট্যাবটি যান, এবং তারপরে "সংকলন উত্স" এ ক্লিক করুন, এবং তারপরে "+" বোতামে ক্লিক করুন, একটি উইন্ডো আসবে, "মাইক্লাস" নির্বাচন করুন। এম "ফাইল এবং তারপরে" যুক্ত করুন "ক্লিক করুন,
প্রকল্পটি তৈরি করুন এবং এটি চালান, সমস্যাটি অবশ্যই সমাধান হয়ে যাবে
এটি একটি এক্সকোড 4 ক্যাশে সমস্যা, কেবলমাত্র / ব্যবহারকারী / আপনার ব্যবহারকারী / গ্রন্থাগার / অ্যাপ্লিকেশন সহায়তা / আইফোন সিমুলেটর / 4.3 / অ্যাপ্লিকেশন / এর অধীনে সমস্ত ফোল্ডার মুছুন
এছাড়াও আপনার আইফোনে যদি একই সমস্যা পরীক্ষা করে থাকে তবে এটি চালানোর আগে পুরানো অ্যাপটিকে মুছুন ...
শুভকামনা। Pascual
কখনও কখনও আইবিল্ডার মিস 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">
customModule="MyFrameworkName"
। বিশাল +10
আমার কেস - আমার উদ্দেশ্য সি প্রকল্পের একটি দ্রুত ফ্রেমওয়ার্ক থেকে একটি ক্লাস ব্যবহার করার চেষ্টা করে, আমি এই ত্রুটি পেয়েছি। সমাধানটি ইন্টারফেস বিল্ডার / স্টোরিবোর্ডে ক্লাসের মডিউল (সুইফট ফ্রেমওয়ার্ক) যুক্ত করার জন্য ছিল যা নীচে দেখানো হয়েছে। আর কিছু না
বিল্ড পর্যায়গুলি-> সংকলন উত্সগুলিতে যান এবং আপনার নতুন .m ফাইল যুক্ত করুন।
আমার ক্ষেত্রে এটি এমন একটি শ্রেণীর জন্য ত্রুটি দেখিয়েছিল যা বিদ্যমান ছিল না! আমার সন্দেহ হয়েছিল যে এটি এমন কিছু যা স্টোরিবোর্ডের ফাইলটিতে বিরক্ত হয়েছিল। আপনি যদি ত্রুটি করে ক্লাস ফাইলটি না চিনেন তবে এটি চেষ্টা করুন:
1) আপনার প্রকল্পটি সূক্ষ্ম বা অন্য কোনও ভাল সম্পাদকে খুলুন। শ্রেণি উল্লেখ করা হচ্ছে জন্য অনুসন্ধান করুন। 2) পুরো বিট যে মুছে ফেলা হবে
customClass="UnrecognizedClassName"
3) এটি সংরক্ষণ করুন। 4) এক্সকোডে ফিরে আসুন এবং প্রকল্পটি পরিষ্কার করুন এবং এখনই এটি চালানোর চেষ্টা করুন।
আমার জন্য কাজ।
customClass="MyCla"
)। কাস্টম ক্লাস অ্যাসাইনমেন্টটি মোছার পরিবর্তে, আমি প্রথম শ্রেণিতে যে ক্লাসটি ব্যবহার করব তা কেবল আমার জন্য বুদ্ধিমান ছিল :)
আমি কেবল এই উত্তরটি যুক্ত করতে চাই কারণ এখানে সমস্ত উত্তর যদি ধরেই না নেওয়া হয় যে ক্লাসটি আসলেই আছে .. এটি কেবল ঠিক যে লিঙ্কার / সংকলকটি এটি দেখতে দেখতে খুব মূ is় .. সুতরাং উত্তরগুলি লিঙ্কারকে অস্তিত্বের দিকে সতর্ক করার সাথে সাথে ঘুরবে around ক্লাসের বা 'জোর' করার জন্য একটি হ্যাক তৈরি করার এটি বিদ্যমান ..
আমার সমস্যাটি ঘটে যখন এই বার্তাটি আসলে অস্তিত্বহীন শ্রেণীর কথা বলছে .. সুতরাং একটি উদাহরণ হ'ল আমি পুরানো গিট রিভিশনটিতে ফিরে যাচ্ছি যা একটি নির্দিষ্ট শ্রেণীর জ্ঞান নেই .. তবুও সংকলকটি অভিযোগ করেছে যে উল্লিখিত শ্রেণিটি না উপস্থিত নেই ..
সমাধান?
আপনি যে পরে যেতে ভাল করা উচিত
ত্রুটি অপসারণের সর্বোত্তম উপায় হ'ল: ১) শ্রেণীর ফাইল নির্বাচন করুন (। মি) 2) " টার্গেট সদস্যতা " এর অধীনে , প্রকল্পের নাম এন্ট্রি "পরীক্ষা করুন"
আমি আমার ক্লাস। ও। মি থেকে পাঠ্যটি অনুলিপি করে, প্রকল্প থেকে সেই শ্রেণি ফাইলগুলি মুছে ফেলা এবং "ফাইল যুক্ত করুন" ব্যবহার করে একই ক্লাসের সাথে নতুন ক্লাস। এবং .m ফাইল তৈরি করে এটি ঠিক করেছি। তারপরে আমি নতুন ফাইলগুলিতে কোডটি পেস্ট করেছি এবং সবকিছু দুর্দান্ত কাজ করেছে। ফাইলগুলি তৈরি করার সময় কোনওভাবে সঠিকভাবে লিঙ্ক করা হয়নি। এর পরে আর কোনও লিঙ্কার পতাকা ব্যবহার করার দরকার নেই।
আমি শেষ পর্যন্ত এটি ঠিক করেছি, আমি আমার .m ফাইলে নিম্নলিখিত কোডটি যুক্ত করতে ভুলে গিয়েছিলাম:
@implementation MyTableViewCell
@end
সুতরাং এটি হচ্ছিল কারণ আমি আমার টেবিল সেলের জন্য একটি স্থানধারক @ অভ্যন্তরীণ পৃষ্ঠ তৈরি করেছি, যার সাথে .xib ফাইলে কোনও উপাদানটির সংযোগ ছিল, তবে ইন্টারফেস বিল্ডারে একটি বাগ রয়েছে যেখানে কোনও ক্লাসের জন্য @ সংশোধন নির্দিষ্ট না করা থাকলে, এটি এটি খুঁজে পেতে পারে না।
আমি .xib কে উত্স হিসাবে দেখার এবং মাই টেবিলভিউসেল দেখার অন্যান্য ফোরামের সমস্ত পদক্ষেপের মধ্য দিয়ে গিয়েছিলাম যদিও আমি আমার কোডের বাইরে মন্তব্য করেছি। আমি সিমুলেটরটি পুনরায় সেট করার চেষ্টা করেছি। এমনকি আমি আমার ক্লাসের সমস্তগুলিকে পৃথক পৃথক ফাইলগুলিতে ইন্টারফেসের মতো নামিয়ে দেওয়ার চেষ্টা করেছি, তবে এ পর্যন্ত কিছুই কার্যকর হয়নি।
PS আমার অভিজ্ঞতায়, .h / .m ফাইলগুলির নাম @ ইনটারফেসের নাম থেকে আলাদা কিনা তা বিবেচ্য নয়। আমার কাছে একাধিক @ অন্তর্ভুক্ত ফাইল রয়েছে যা তারা ভাল কাজ করে।
পিপিএসে আমি ইউআইটিএবলভিউসেল এবং ইউআইসিএল্লেশনভিউসেল কেন এই ক্রটিটি https://stackoverflow.com/a/22797318/539149 এ সৃষ্টি করে তা রেজিস্টারক্লাস ব্যবহার করে সংকলন-সময়ে কীভাবে প্রকাশ করতে হবে তার আরও বিশদ বিবরণ আমার কাছে রয়েছে : forCellWithReuseIdentifier:।
এটি ঘটেছিল কারণ .xib পুরানো অ্যাপ ডেলিগেটের সাথে বাসি লিঙ্ক পেয়েছে যা আর নেই। আমি এটি এইভাবে ঠিক করেছি:
আমি এটি চেষ্টা করেছি এবং অন্যান্য, এই সাইটে তালিকাভুক্ত উত্তরগুলি, এর মধ্যে কোনোটাই আমার জন্য এটি বাছাই করা হয়নি। এই মন্তব্যগুলি ( http://www.iphonedevsdk.com/forum/iphone-sdk-development/43330- অজানা- class- interface- builder- file.html থেকে ) সহায়তা করেছে:
অনুসন্ধান এবং অনুসন্ধান এবং অনুসন্ধানের পরে অবশেষে একটি ফাইলের মধ্যে লুকানো এই মোছা শ্রেণীর নামটি আবিষ্কার করেছিলাম। এক্স-কোডে ইন্টারফেস বিল্ডার ফাইলগুলি খুলতে হয়েছিল, তার উপর ডান ক্লিক করে এবং 'উত্স কোড হিসাবে দেখুন' নির্বাচন করে। তারপরে এটি অনুসন্ধান করে সামনে এলো
<object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <string>com.apple.InterfaceBuilder.IBCocoaTouchP lu gin</string> <string>*this was the class name*</string>
কেবলমাত্র শেষ পংক্তিটি সরিয়ে ফেলা দুর্ভাগ্যজনকভাবে এটি ঠিক করে না, ফাইলটিতে আইটেমের ভুল নম্বর রয়েছে বলে অভিযোগ করে। এটির উপরে রেখাগুলির বিভাগে আপনাকে সংশ্লিষ্ট লাইনটি সরিয়ে ফেলতে হবে, যা উল্লেখ করে CustomClass
।
আমার ক্ষেত্রে, আমার কাছে এক্সকোড 6 রয়েছে, নির্দিষ্ট বর্গ। এম ফাইলটি বিল্ড ফেজের ভুল জায়গায় শেষ - এটি সংকলন সূত্রের অধীনে হওয়া উচিত ছিল তবে শেষ হওয়া উচিত
কেবলমাত্র প্রকল্পের সেটিংগুলিতেই নয়, টার্গেট সেটিংয়েও আপনাকে সমস্ত-লোড-ওবিজেসি পতাকা যুক্ত করতে হবে ..
মূল-প্লট: ইন্টারফেস বিল্ডার ফাইলে অজানা শ্রেণীর সিপিলারহোস্টিংভিউ
এই সমস্যাটি পুরানো হয়ে উঠবে বলে মনে হয় না।
আমি এক্সকোড 8 এর সাথে একই সমস্যাটি পেয়েছিলাম এবং এটি স্মাইলবটের মতোই সমাধান করেছি :
এক্সকোডের মধ্যে আপনার স্টোরিবোর্ড ফাইলটিকে "উত্স কোড" হিসাবে খুলুন:
শ্রেণীর জন্য বর্ণিত শ্রেণীর জন্য অনুসন্ধান করুন এবং পুরো বিটটি মুছে ফেলুন যা বলছে
customClass = "UnrecognizedClassName"
আমার কাছে 'ইন্টারফেস বিল্ডার ফাইলের মধ্যে অজানা শ্রেণীর ফেভারিটস বাটন' ছিল এবং এটি একটি স্টোরিবুক দৃশ্যে সন্ধান করে যেখানে প্রশ্নটির বোতামটিতে পরিচয় পরিদর্শকের শীর্ষে ক্লাস ফিল্ডে "ফেভারিটস বাটন" এর বোগাস কাস্টম ক্লাস ছিল। আমি এই মানটি পরবর্তী ক্ষেত্রটিতে রাখতে চাইছিলাম: পরিচয় লেবেল।
এটি "ইউআইবাটন" এ পরিবর্তন করা সমস্যার সমাধান করে।
আমি সুইফটে এটি ছুটে এসেছি।
প্রজেক্টের বেস.প্লোজ ফোল্ডারে .xib ফাইলটি সরানো এই ত্রুটি থেকে মুক্তি পেয়েছে।
এক্সকোড ৪ এর অধীনে আমার এইএলমিট অ্যাপ্লিকেশনটিকে ইউনিভার্সাল হিসাবে রূপান্তর করার সময় আমার আজ এই ত্রুটিটি ছড়িয়ে পড়েছিল This এই অ্যাপটিটি ইউটিলিটি টেমপ্লেটের উপর ভিত্তি করে তৈরি এবং মূলত এক্সকোড 3 এর আওতায় নির্মিত হয়েছিল built
সময় বাঁচাতে আমি আইফোন মেইন এবং ফ্লিপসাইড ভিউগুলি ইউনিভার্সাল অ্যাপে উপযুক্ত নামগুলিতে অনুলিপি করেছি। আমি "ইন্টারফেস বিল্ডার ফাইলে অজানা ক্লাস এক্স" ত্রুটিটি অনুভব করেছি। আমার ক্ষেত্রে এটি XIB ফাইল বা টার্গেটে কিছুই ছিল না।
আমি অন্যান্য কারণেও aaLuminate-Info.plist ফাইলটি অনুলিপি করেছিলাম - এটিতে একটি পুরানো কী "মাইনিবি ফাইল ফাইলের নাম" মেইন উইন্ডোতে সেট করা ছিল।
এই কীটি মুছে ফেলার সাথে সাথেই সমস্যাটি ঠিক হয়ে গেল!
আমার ক্ষেত্রে আমি এই ত্রুটিটি পেয়েছি কারণ আমি একটি নতুন প্রকল্প তৈরি করে এবং তারপরে বেশ কয়েকটি উত্স ফাইলগুলি মুছে ফেলা এবং কার্যকারী প্রকল্প থেকে একই নামের উত্স ফাইলগুলি অনুলিপি করে কিছু কাজ সংরক্ষণ করার চেষ্টা করেছি। আমি আমার মেইনস্টিরিবোর্ড ফাইলটিও অনুলিপি করেছি যা আমার রুটভিউ নিয়ন্ত্রণকারীকে খুঁজছিল। যাইহোক, আমি যখন পূর্বের পণ্যটি থেকে মূল রুটভিউ কনট্রোলারটি মুছে ফেলেছিলাম এবং তারপরে রুটভিউ কনট্রোলারটিতে যুক্ত করেছি, স্পষ্টত অ্যাড ফাইল অপারেশন উপরের পরামর্শ মতো লক্ষ্য বাক্সটি "চেক" করতে ব্যর্থ হয়েছে। কেবলমাত্র নতুন আমদানি করা ".m" ফাইলগুলিকে কেবলমাত্র অনুসন্ধানের মাধ্যমে এবং লক্ষ্য সদস্যতার বাক্সটি পরীক্ষা করা হয়েছে তা নিশ্চিত করে, সবকিছু ঠিকঠাক ছিল। আমি মনে করি যা ঘটছিল তা হ'ল স্টোরিবোর্ড ফাইলটি এমন একটি শ্রেণীর সন্ধান করছিল যা লক্ষ্য সদস্যপদটি চেক না করায় লিঙ্কটি থেকে "বাদ দেওয়া" হয়েছিল। টার্গেটের জন্য প্রয়োজনীয় ফাইলগুলি ফাইলের পরিদর্শককে লক্ষ্য সদস্যপদে এতটা মনোনীত করা হয়েছে তা নিশ্চিত করে কৌশলটি চালিয়ে গেছেন। ধন্যবাদ প্যাট! (উপরে দেখুন)
আমার ক্ষেত্রে এটি ছিল কারণ আমি .h ফাইলে একটি ইউআইটিএবলভিউ ঘরের সাবক্লাসের একটি সাবক্লাস ঘোষণা করেছিলাম (উভয় সাবক্লাসের ঘোষণা একই .h ফাইলে ছিল), তবে সেই দ্বিতীয় সাবক্লাসের খালি বাস্তবায়ন করতে ভুলে গেছি .m ফাইল।
আপনি .h ফাইলে ঘোষণা করেন এমন একটি সাবক্লাসের কোনও সাবক্লাস বাস্তবায়ন করতে ভুলবেন না! সহজ, তবে ভুলে যাওয়া সহজ কারণ আপনি যদি প্রতি ঘন্টা .h / .m ফাইলের সাথে এক শ্রেণির সাথে কাজ করছেন তবে এক্সকোড আপনার জন্য এটি করবে।
আমার "ইন্টারফেস বিল্ডারে অজানা শ্রেণি রেটভিউ" ছিল যেখানে রেটভিউ ইউআইভিউর একটি সাবক্লাস ছিল। আমি আমার স্টোরিবোর্ডের দৃশ্যে একটি ইউআইভিউ ফেলেছি এবং কাস্টম শ্রেণীর ক্ষেত্রটি রেটভিউতে পরিবর্তন করেছি। তবুও, এই ত্রুটিটি উপস্থিত হয়েছিল।
ডিবাগ করতে, আমি আমার শ্রেণীর নামটি রেটভিউ 2 এ পরিবর্তন করেছি এবং সমস্ত রেফারেন্সগুলিকে ইউআইভিউর কাস্টম শ্রেণীর ক্ষেত্র বাদে ম্যাচের জন্য পরিবর্তন করেছি। ত্রুটি বার্তাটি এখনও রেটভিউয়ের সাথে অনুপস্থিত শ্রেণীর মতো আগের মতো উপস্থিত হয়েছিল। এটি নিশ্চিত করেছে যে ত্রুটি বার্তাটি কাস্টম শ্রেণীর ক্ষেত্রের মানের সাথে সম্পর্কিত। আমি এই মানটি রেটভিউ 2 তে পরিবর্তন করেছি এবং ত্রুটি বার্তাটি "ইন্টারফেস বিল্ডারে অজানা শ্রেণীর রেটভিউ 2" তে পরিবর্তিত হয়েছে। প্রকারের অগ্রগতি।
অবশেষে, আমি উত্স কোড ফাইলগুলি ফাইল পরিদর্শকের কাছে নিজেই পরিদর্শন করেছি। সেখানে আমি আবিষ্কার করেছি যে উত্স কোড ফাইল (যা আমি একটি টিউটোরিয়াল থেকে অনুলিপি করেছি) আমার টার্গেটের সাথে সম্পর্কিত নয়। অন্য কথায়, এটির কোনও টার্গেট সদস্যপদ ছিল না। আমি সেই বাক্সটি পরীক্ষা করেছিলাম যা ক্লাসের উত্স কোড ফাইলটিকে লক্ষ্য অ্যাপের সদস্য করে তোলে এবং ত্রুটি বার্তাটি চলে যায়।
আমার ক্ষেত্রে আমি স্টোরবোর্ডের পরিচয় পরিদর্শকের (উপরে শীর্ষে 'কাস্টম ক্লাস' এর অধীনে) নির্বাচিত হয়েছিল বুঝতে না পেরে "ভিউকন্ট্রোলার" নামে একটি শ্রেণি মুছে ফেলেছিলাম।
আপনাকে কেবল নিজের পরিচয় পরিদর্শকের কাস্টম ক্লাস ফিল্ডে ভিউ কন্ট্রোলারের জন্য সঠিক ক্লাসটি নির্বাচন করতে হবে বা আপনার প্রকল্পে একটি নতুন ক্লাস যুক্ত করতে হবে এবং সেইটিকে আপনার পছন্দসই ক্লাস হিসাবে নির্বাচন করতে হবে।
আমার জন্য কাজ!
আমি টার্গেটগুলিতে আন্ডার বিল্ড ফেজ ফাইল যুক্ত করেছি এবং সমস্যাটি সমাধান হয়ে গেছে। ফাইলটি যুক্ত করার পদক্ষেপগুলির জন্য, আমার উত্তর এখানে দেখুন:
এটি আমাকে কিছুটা বাদ দিয়েছিল এবং উপরের কোনও পরামর্শই আমাকে ত্রুটি থেকে মুক্তি পেতে সহায়তা করেছিল। ভাগ্যক্রমে ক্লাসটি ব্যবহার করে আমার কাছে কেবল একটি আইবি অবজেক্ট ছিল তাই আমি কেবল এটি মুছে ফেলেছি এবং নির্দিষ্ট একই শ্রেণীর সাথে এটি আবার যুক্ত করেছি। ত্রুটি চলে গেছে ...