ত্রুটি বার্তাটি কোর ডেটা ফাইলগুলির উল্লেখ করলে এই উত্তরটি পড়ুন
সংক্ষিপ্তসার: আপনার উভয় স্বয়ংক্রিয়ভাবে উত্পন্ন এবং ম্যানুয়ালি উত্পন্ন কোর ডেটা পরিচালিত অবজেক্ট শ্রেণির ফাইল থাকতে পারে।
এই উত্তরটি প্রয়োগ করা হয় যদি ত্রুটির প্রথম লাইনটি একটি Foo + CoreDataProperties.o বা Foo + CoreDataClass.o ফাইলকে বোঝায় । উদাহরণ:
error: Multiple commands produce '/Users/me/Library/Developer/Xcode/DerivedData/MyApp-uebslaqdwgldkjemijpdqmizgyzc/Build/Intermediates.noindex/ MyApp /Debug-iphonesimulator/ MyApp.build/Objects-normal/x86_64/Foo+CoreDataProperties.o':
1) Target ' MyApp ' (project ' MyApp ') has compile command for Swift source files
2) Target ' MyApp ' (project ' MyApp ') has compile command for Swift source files
মূল কারণটি বিল্ড ট্রান্সক্রিপ্টের কম্পাইল সুইফট উত্স ফাইল বিভাগটি প্রসারিত করে দেখা যায় । উদাহরণ স্বরূপ:
<unknown>:0: error: filename "Address+CoreDataClass.swift" used twice: '/Users/myUserName/Projects/Jnky/Foo+CoreDataProperties' and '/Users/jk/myUserName/Developer/Xcode/DerivedData/MyApp-uebslaqdwgldkjemijpdqmizgyzc/Build/Intermediates.noindex/MyApp.build/Debug/MyApp.build/DerivedSources/CoreDataGenerated/Jnky/Foo+CoreDataProperties.swift'
উল্লিখিত প্রথম ফাইলটি আপনার প্রকল্প ডিরেক্টরিতে একটি উত্স ফাইল রয়েছে যা প্রজেক্ট ন্যাভিগেটরে আপনার ডেটা মডেল নির্বাচন করে এবং মেনু সম্পাদক > ম্যানেজড অবজেক্ট সাবক্লাস তৈরি করুন এ ক্লিক করে কেউ তৈরি করেছে । এই বৈশিষ্ট্যটি এক্সকোড 7 বা আরও তে যুক্ত হয়েছিল।
দ্বিতীয় ফাইলটি একই নামের একটি ফাইল তবে যা এক্সকোডে সমাধিস্থ হয় DerivedData
। এই বিল্ডটি প্রতিটি বিল্ডের সময় এক্সকোড দ্বারা স্বয়ংক্রিয়ভাবে উত্পন্ন হয় যদি ডেটা মডেল ( .xcdatamodeld
) ফাইলটি টার্গেটের সংকলন উত্স বিল্ড ফেজের অন্তর্ভুক্ত থাকে। এই বৈশিষ্ট্যটি এক্সকোড 9 বা তে যুক্ত হয়েছিল। কোডওন পপআপের সেটিংয়ের উপর নির্ভর করে প্রতিটি সত্তা / শ্রেণীর জন্য জিরো, একটি বা দুটি ফাইল তৈরি করা হয় । আপনি যখন আপনার ডেটা মডেলটি সম্পাদনা করার সময় কোনও সত্তা নির্বাচন করেন তখন সেই পপআপটি ডেটা মডেল ইন্সপেক্টরকে থাকে ...

সেটিংসটি হ'ল:
- ম্যানুয়াল / কিছুই নেই কোনও ফাইল উত্পন্ন হয় না
- বিভাগ / এক্সটেনশন ওয়ান ফাইল, Foo + CoreDataProperties.m বা .swift উত্পাদিত হয়, এতে একটি উদ্দেশ্য-সি বিভাগ বা সুইফট এক্সটেনশন রয়েছে।
- শ্রেণীর সংজ্ঞা সেই একই বিভাগ / এক্সটেনশন ফাইলটি উত্পন্ন হয়, এবং এর সাথে একটি ফু + কোরডেটা ক্লাস.এম বা .swift উত্পন্ন হয়, এতে শ্রেণীর ঘোষণা এবং সংজ্ঞা থাকে।
সুতরাং আপনি দেখতে পাচ্ছেন যে সমস্যাটি তখনই ঘটে যখন কোনও বিকাশকারী (আমার মতো) যিনি পুরানো এক্সকোডের সাথে অভ্যস্ত, একটি নতুন এক্সকোডে একটি প্রকল্প শুরু করেন। আমরা মনে করি যে আমাদের পরিচালিত অবজেক্ট সাবক্লাস মেনু আইটেমটি তৈরি করুন যা আমরা করি, প্রজেক্ট ন্যাভিগেটরে আমরা দেখতে পাই এমন ফাইলগুলি তৈরি করার জন্য যখন বুঝতে পারি না যে কোডজেন পপআপে আমাদের সেটিংস এক্সকোডকে নকল ফাইল তৈরি করছে, যা অ্যাপল "চালাকভাবে" প্রকল্প নেভিগেটরে প্রদর্শিত হয় না, কারণ তারা বিকাশকারীদের হেডারটিতে থাকা মন্তব্যটি পড়তে এবং তাতে মনোনিবেশ করতে বিশ্বাস করে না // এই ফাইলটি স্বয়ংক্রিয়ভাবে তৈরি হয়েছিল এবং এটি সম্পাদনা করা উচিত নয়।
সমাধান 1 - পুরানো উপায় ব্যবহার করুন
আপনি কেবলমাত্র একটি সেটিং দিয়ে ডেটা মডেলের জন্য সমস্ত স্বয়ংক্রিয় কোডজেন অক্ষম করতে পারেন :
- সমস্যার টার্গেটের বিল্ড পর্যায়গুলি খুলুন ( প্রকল্প ন্যাভিগেটরে , প্রকল্প নির্বাচন করুন, তারপরে উপস্থিত TARGETS এর তালিকায় , সমস্যার লক্ষ্যটি নির্বাচন করুন, তারপরে ট্যাব বিল্ড পর্যায়গুলি )।
- সংকলন উত্স এন্ট্রি প্রসারিত করুন এবং সমস্যা ডেটা মডেল (
.xcdatamodeld
ফাইল) সন্ধান করুন।
- এটি সংকলন তালিকা থেকে মুছুন
- নিশ্চিত করুন যে ডেটা মডেলটি অনুলিপি বান্ডিল সংস্থান তালিকায় অন্তর্ভুক্ত রয়েছে ।
সমাধান 2 - নতুনদের জন্য কোর ডেটা ম্যাজিক
এখানে, আপনি সমস্ত নতুন পথে এগিয়ে যান।
- আপনার তথ্য মডেলটি সেই সংকলন উত্স অনুসারে ছেড়ে দিন ।
- আপনার ডেটা মডেল প্রতিটি সত্তা পরিদর্শক ইন, সেট Codegen করার ক্লাস ডেফিনিশন ।
- প্রকল্প ন্যাভিগেটর সালে, মুছুন এবং ট্র্যাশ কোনো ফু + + CoreDataClass ফাইল, এবং কোন নামান্তর ফু + + CoreDataProperties.m বা .swift ভালো কিছু করার জন্য ফাইল ফু + + MyProperties ।
- প্রতিটি Foo + MyProperties.m বা .swift ফাইলটিতে, যদি Xcode দ্বারা উত্পাদিত বৈশিষ্ট্য থাকে তবে এই বৈশিষ্ট্যগুলি মুছুন কারণ সেগুলি কোডজেন দ্বারা নির্মিত লুকানো ফাইলগুলিতে থাকবে ।
এই সমাধান সহ, আপনার বর্গ সংজ্ঞা প্রতিটি বিল্ডের ডেটা মডেল থেকে স্বয়ংক্রিয়ভাবে উত্পন্ন হয়। আপনি এগুলি দেখতেও পারবেন না। এটি কোর ডেটা ম্যাজিক , নতুনদের জন্য দুর্দান্ত এবং সহজ।
সমাধান 3 - সর্বাধিক রিয়েল-ওয়ার্ল্ড অ্যাপ্লিকেশনগুলির জন্য
আপনি যদি অ-পরিচালিত বৈশিষ্ট্যগুলি সত্যিই যুক্ত করতে চান তবে সলিউশন 2 টি ভাল নয়। (অবজেক্টিভ-সি বিভাগগুলিতে বৈশিষ্ট্যগুলি যুক্ত করার অনুমতি দেয় না এবং স্যুইফট সঞ্চিত বৈশিষ্ট্যগুলিকে এক্সটেনশনে যুক্ত করার অনুমতি দেয় না)) সুতরাং বেশিরভাগ আসল-ওয়ার্ল্ড অ্যাপ্লিকেশনগুলিতে আপনি সম্ভবত সমাধান 1 এবং 2 এর মধ্যে অর্ধেক যেতে যেতে চান ...
- সংকলন উত্স তালিকায় আপনার ডেটা মডেলটি ছেড়ে যান
- আপনার ডেটা মডেল প্রতিটি সত্তা পরিদর্শক ইন, সেট Codegen করার শ্রেণী / এক্সটেনশন ।
- প্রকল্প নেভিগেটরে, যে কোনও Foo + CoreDataClass.m বা .swift ফাইলগুলি মুছুন এবং ট্র্যাশ করুন এবং ভবিষ্যতের বিভ্রান্তি হ্রাস করতে কোনও Foo + CoreDataProperties.m বা .swift ফাইলের নামকরণ করুন কেবলমাত্র Foo.m বা .swift এ ।
- প্রতিটি Foo.m বা .swift ফাইলের শ্রেণীর সংজ্ঞা রয়েছে তা নিশ্চিত করুন , যাতে আপনি নিজের অ-পরিচালিত বৈশিষ্ট্য যুক্ত করতে পারেন।
(পসিট্রনের উত্তরের স্বীকৃতি। আমার উত্তর এখানে ব্যাখ্যা করেছে যে পসিট্রনের উত্তর (আমার সমাধান 1) কেন কাজ করে এবং সমাধান 2 এবং সমাধান 3 যোগ করে।)