এক্সকোড 6 এ স্যুইফট-অব অবজেক্টিভ-সি হেডার তৈরি হয়নি


242

আমি সম্প্রতি একটি বিদ্যমান প্রকল্পে সুইফ্ট যুক্ত করার চেষ্টা করছি, এটি বাস্তব-বিশ্বের ফ্যাশনে চেষ্টা করার জন্য।

প্রকল্পে একটি সুইফট উত্স ফাইল যুক্ত করার পরে, আমার "ব্রিজিং শিরোলেখ", অর্থাত, সিউফ্ট থেকে ওপজেক্ট-সি পাওয়ার বিষয়ে কোনও সমস্যা নেই।

তবে *-Swift.hহেডার ফাইলটি যা সুইচ ক্লাস চিহ্নিত করে @objcবা ওবিজেসি ক্লাসের সাবক্লাসগুলিকে প্রকাশ করার কথা , এটি কোথাও পাওয়া যায়নি :-(

আমার মূল অ্যাপ কোডে (যা এখনও অবজেক্টিভ-সি রয়েছে) আমার নতুন সাবক্লাসের ব্যবহার কীভাবে সম্পন্ন করতে হয় সে সম্পর্কে আমি কোনও নির্দিষ্ট নির্দেশ দেখতে পাচ্ছি না don't

আমি যে অ্যাপটির নেতৃত্ব দিচ্ছি তার অ্যাপ্লিকেশনটির মোটামুটি বড় কোডবেস (70.000 লাইন) রয়েছে, সুতরাং এটিকে একসাথে স্থানান্তর করা প্রশ্নের বাইরে নয়।


5
হ্যাঁ এটা করে. এটি সত্যই জিজ্ঞাসা করছে যে এক্সকোড আইডিইতে আপনাকে এই সুইফট>> ওবিজেসি শিরোনামটি তৈরি করার জন্য কিছু করার দরকার কারণ কোনও বিদ্যমান ওজেসি প্রকল্পে সুইফ্ট কোড যুক্ত করার সময় এটি "ডিফল্টরূপে" হয় না।
ডেভিড ক্রিস্টেনসেন

5
@ পোপে আমি একমত নই এই ক্ষেত্রে, আপনি যদি ফাইলগুলি সম্পাদনা করতে এবং কমান্ড লাইন থেকে সংকলন করছিলেন, আপনি এই সমস্যাটি দেখছেন না। এটি আইডিই যা আপনার পক্ষ থেকে চলছে (বা সম্পাদন করার কথা) যা ইস্যুতে রয়েছে। এটি সম্ভবত প্রজেক্ট সেটআপের সাথে সম্পর্কিত, যা অবশ্যই আইডিই ফাংশন
গাইজে

11
@ পোপিয়ে ডক্স থেকে (পিডিএফ) : আপনি যখন সুইফট কোডটি অবজেক্টিভ-সি তে আমদানি করেন, আপনি সেই ফাইলগুলি উদ্দেশ্য-সিতে প্রকাশ করার জন্য একটি এক্সকোড-উত্পন্ন হেডার ফাইলের উপর নির্ভর করেন file (আমার বোল্ডফ্যাকিং, অ্যাপলের ইটালিক্স)) এটি এক্সকোডের একটি বৈশিষ্ট্য সম্পর্কে স্পষ্টভাবে একটি প্রশ্ন যা আপনাকে সুইফট এবং অবজেক্টিভ-সি একসাথে ব্যবহার করতে সহায়তা করে এবং তিনটি ট্যাগ অবশ্যই যথাযথ।
কালেব

3
আমি গাইজ এবং ডকুমেন্টেশনের সাহায্যে এটি সমাধান করেছি। এবং আমি কেবল ট্যাগটি চারপাশে ফেলে দিই না: এই ক্ষেত্রে, শিরোনাম ফাইলটি XCode দ্বারা তৈরি এবং দৃশ্যমান হওয়া উচিত। এটি ছিল না, এভাবে ত্রুটি উত্পন্ন হয়েছিল।
ডেভিড ক্রিস্টেনসেন

3
@ পোপিয়ে কিছুই ভুল-বিভ্রান্ত হয়নি - আমি এই পৃষ্ঠাটি সরাসরি পৃষ্ঠা পৃষ্ঠা 46 থেকে অনুলিপি করেছি You আপনি একটি অনুরূপ তবে ভিন্ন ভিন্ন প্যাসেজ পেয়েছেন যা কম বেশি একই জিনিস বলে says
কালেব

উত্তর:


165

এখন এটা কাজ করছে.

  1. প্রকল্পের অবশ্যই একটি পণ্য মডিউল নাম থাকা উচিত যাতে স্থানগুলি অন্তর্ভুক্ত থাকে না
  2. সংজ্ঞা দেয় মডিউলটি অবশ্যই প্যাকেজিংয়ের অধীনে বিল্ড সেটিংসে হ্যাঁ সেট করতে হবে ।

শেষ পর্যন্ত কাজ করে। সহায়তার জন্য প্রত্যেককে ধন্যবাদ :-)


64
এর Build Settingsঅধীনে Packaging, আমার Defines Moduleসেট করা আছে Yesএবং আমি Product Module Nameফাঁকা ছাড়াই একটি তৈরি করেছি । "* -Swift.h" এক্সকোড 6 দ্বারা উত্পন্ন হয় না ???
লুজি

25
একটি অতিরিক্ত নোট: আমি প্রথমে লক্ষ্য স্তরে উল্লিখিত বৈশিষ্ট্যগুলি সেট করার চেষ্টা করেছি, এবং এটি কার্যকর হয়নি, "* -Swift.h" ফাইলটি তৈরি করা হয়নি। আমি প্রকল্পের স্তরে সেট করার সময় এটি কাজ করেছিল।
মার্সিন

22
আমারও একই সমস্যা হচ্ছে। আমি প্রকল্প এবং লক্ষ্য, এবং কোনও স্থান নির্ধারণ ছাড়া একটি সংজ্ঞায়িত উভয়ের জন্য Defines Moduleসেট করে রেখেছি, তবে আমি এই ফাইলটি উত্পন্ন করে বলে মনে করতে পারি না। YesProduct Module Name
ক্রেগ ওটিস

8
অন্যরা যেমন আমার মতোই বিভ্রান্ত হয় সে ক্ষেত্রে ... আমার এখানে অন্ধ ভাগ্য থাকতে হয়েছিল এবং কেবল শিরোনামটি আমদানি করতে হয়েছিল, কারণ এটি স্বয়ংক্রিয়ভাবে সম্পূর্ণ হবে না।
শাওনওয়াল

14
আপনি কেবল প্রয়োগের ক্ষেত্রে শিরোনাম ফাইলগুলিতে (.h) সুইচ আমদানি করতে পারবেন না।
zirinisp

122

আমার অনুরূপ সমস্যা হয়েছিল এবং আমি দেখতে পেয়েছি যে আপনি কেবল যুক্ত করতে পারেন

#import "ProductModuleName-Swift.h"

আপত্তি-সি .এম ফাইলগুলিতে, ছাতার হেডারের সন্ধানের জন্য .h ফাইল নয়


2
এটি সঠিক, এবং ... আমার যদি অবজেক্ট শিরোনামে একটি সুইফ্ট ক্লাস ব্যবহার করা দরকার? আমি ফরওয়ার্ড ডিক্লেয়ারেশন দিয়ে চেষ্টা করেছি, এটিও কাজ করে না।
আইএক্সএক্স

2
ওফস, সরি, ফরওয়ার্ড ডিক্লেয়ারেশন কাজ করে। আমি একটি সেমিকোলন যুক্ত করতে ভুলে গেছি: পি
আইএক্সএক্স

14
ভবিষ্যতের সন্ধানকারীদের জন্য: আপনার শিরোনামগুলিতে আপনার .h ফাইলগুলির শীর্ষে (
ক্লাস ইয়োরসুইফ্টক্লাস

4
আমার যদি একটি শিরোনাম ফাইলটিতে একটি সুইফট এনাম ব্যবহার করা দরকার?
জাকেরেগে

1
তদ্ব্যতীত, যদি "# আমদানি পণ্যমডিউলনাম-সুইফট। एच" কোনও শিরোনামের ফাইলে থাকে তবে প্রোডাক্টমডিউলনাম-সুইফট। ফাইলটি মোটেই উত্পন্ন হবে না (এক্সকোড 7.২ অনুসারে) তাই যদি এটি মুছে ফেলা হয় (যেমন বিল্ডটি পরিষ্কার করে) ফোল্ডার) তারপরে আপনি ফাইলটি আমদানি করা হয়েছে এমন সব জায়গাতেই ত্রুটি বার্তাগুলি দেখতে পাবেন, এমনকি এম। এম ফাইলের জন্যও, বিভ্রান্তি যোগ করছে।
পুনর্বার

59

আমি আবিষ্কার করেছি যে এটি ফাইল তৈরির আগে আমাকে সমস্ত বিল্ড ত্রুটিগুলি ঠিক করতে হয়েছিল।

আমার সমস্যাটি হ'ল এটি একটি মুরগির / ডিমের সমস্যা ছিল, যে পর্যন্ত আমি আসলে কোনও #importবিবৃতি মন্তব্য না করা পর্যন্ত আমি কোনও বিল্ড ত্রুটি দেখতে পাই না :

//#import "ProductModuleName-Swift.h"

যা আমার সুইফট কোডে অন্যান্য ত্রুটিগুলির একটি গুচ্ছ প্রকাশ করেছিল।

একবার আমি এই নতুন ত্রুটিগুলি স্থির করে এবং উত্স বিল্ডিং সফলভাবে পেলাম, আমি #importএবং বিঙ্গোটিকে সংবিধানিত করেছিলাম ! শিরোনামটি তৈরি এবং সঠিকভাবে আমদানি করা হয়েছিল :)


ধন্যবাদ এটি আমাকে ঠিক ধরেছিল। সুইফ্ট বিল্ড ত্রুটিগুলি ঠিক করার পরে আমি যেতে ভাল ছিল। (এক্সকোড সংস্করণ 6.1.1)
রিক রবার্টস

10
এক্সকোডে "ত্রুটির পরে বিল্ডিং চালিয়ে যান" চালু করার জন্য এটি একটি দুর্দান্ত পয়েন্ট এবং একটি ভাল কারণ।
কেন্ডল হেলমেস্টেটার জেলনার

হুবহু এটি আমার ক্ষেত্রে: সুইফট-এইচ সুইফট সোর্স কোডে একই পরিবর্তনের পরে ঘটেছে
জর্জিও ক্যালজোলাতো

3
মুরগির / ডিমের সমস্যা দেখার পরে আমি আমার সমস্যাটি বুঝতে পারি, ভাল উপমা
d0ye

এই সমস্যাটি সর্বদা আমার কাছে ফিরে আসছিল (এক্সকোড 10) এবং আমি সবেমাত্র Xcode কে বগি হিসাবে ব্যাখ্যা করেছি। যদিও এটি উত্তর ছিল
সুমাকু টেনশন

44

আপনি যদি আমার মত হন তবে আপনি সম্ভবত শিরোনামের নামটি ভুল পেয়েছেন। কিছুক্ষণ মাথা ঠেকানোর পরে আমি ডেরিভডটাতে ফাইলটির সন্ধান করলাম এবং নিশ্চিত যে এটি যথেষ্ট আছে। আমার সেটআপে (স্ট্যান্ডার্ড থেকে প্রাপ্ত ডেটা ফোল্ডারটি ব্যবহার করে, আমি বিশ্বাস করি):

cd ~/Library/Developer/Xcode/DerivedData
find * -iname '*Swift.h'

এটি খুঁজে পাবেন। যদি সেই ফোল্ডারে কোনও কিছু মিলে না যায় তবে এক্সকোড এটি তৈরি করছে না।

আমি এক্সকোড সংস্করণ 6.2 ​​(6C86e) ব্যবহার করছি


এটা আমার জন্য এটি। আমি ভাবছিলাম যে স্বতঃপূরণ এটিকে বেছে নেবে যে আমি সবেমাত্র ধরে নিয়েছিলাম যে এটি সেখানে নেই। ডিরেক্টরিতে দেখে জিনিসগুলি সাফ হয়ে গেছে।
উইল

কখনও কখনও দেখা বিশ্বাস হয়। প্রস্তাবিত উত্তরের অনুসরণ না করা পর্যন্ত আমি জিনিসগুলি কাজ করতে সক্ষম হইনি এবং তারপরে উত্পন্ন শিরোলেখ খুঁজে পেতে এই পদক্ষেপগুলি ব্যবহার করেছি যা আমার অবাক করে দিয়েছিল যা -Swift.hআমার আসল সুইফট ফাইলটির নাম নয় এবং পোস্টফিক্সড ছিল । ধন্যবাদ!
জোশ হাবদাস

ধন্যবাদ! আমাকে অনেক সময়
বাঁচিয়েছে

43

যদি আপনার প্রকল্পের মডিউল নামটিতে ফাঁকা স্থান থাকে, আপনাকে অবশ্যই স্পেসগুলি একটি আন্ডারস্কোর দিয়ে প্রতিস্থাপন করতে হবে

উদাহরণস্বরূপ, যদি আপনার প্রকল্পের নাম "আমার প্রকল্প" হয় তবে আপনি ব্যবহার করবেন:

# মিম্পোর্ট "মাই_প্রজেক্ট-সুইফট। h


12
যদি আপনার প্রকল্পের মডিউল নামটিতে হাইফেন থাকে তবে সেগুলি একটি আন্ডারস্কোর দিয়েও প্রতিস্থাপন করা উচিত। সুতরাং যদি আপনার প্রকল্পের নাম "আমার প্রকল্প" হয় তবে # মিম্পোর্ট "মাই_প্রজেক্ট।" ব্যবহার করুন
জেফ এমস

6
এছাড়াও, যদি আপনার প্রকল্পের মডিউল নামটি কোনও সংখ্যার সাথে শুরু হয়, তবে এটি একটি আন্ডারস্কোর দিয়েও প্রতিস্থাপন করা উচিত। "1 ম প্রকল্প" হবে "_st_Project-Swift.h"
ড্যানিশেশন

31

* একমাত্র গুরুত্বপূর্ণ বিষয়: *

লক্ষ্যবস্তুতে "পণ্য মডিউল নাম" সংজ্ঞায়িত করতে ব্যবহার করুন, তারপরে -Swift.h

#import <Product Module Name>-Swift.h

// in each ObjectiveC .m file having to use swift classes
// no matter in which swift files these classes sit.

"মডিউলটি সংজ্ঞায়িত করুন" পরম হ্যাঁ বা নাতে সেট করা থাকলে বা "পণ্য মডিউল নাম" প্রকল্পটি সেট না করা বিবেচনাধীন।

অনুস্মারক: সুইফ্ট ক্লাসগুলি অবশ্যই এনএসবজেক্ট থেকে প্রাপ্ত হবে বা অবজেক্টিসি / ফাউন্ডেশনের কাছে প্রকাশের জন্য @objc বৈশিষ্ট্যের সাথে ট্যাগ করা উচিত || কোকো ...


1
এটি সত্য: প্রকল্পে বা টার্গেটে "মডিউলটি সংজ্ঞায়িত করার" প্রয়োজন নেই
জর্জিও ক্যালজোলাতো

25

আমি আরও একটি কারণ যুক্ত করতে চেয়েছিলাম যাতে আপনি এটির সাথে কোনও সমস্যা খুঁজে পেতে পারেন - আমি এমন একটি ফ্রেমওয়ার্ক তৈরি করছি যা সুইফট এবং অবজেক্টিভ-সি কোডকে মিশ্রিত করে। আমি ফ্রেমওয়ার্কের বাইরে সুইফ্ট ক্লাসগুলি আমদানি করতে সক্ষম হইনি - আমি -সুইফট.এইচ ফাইলটি পরীক্ষা করেছিলাম এবং এটি উত্পন্ন হচ্ছে তবে খালি ছিল।

সমস্যাটি খুব, খুব সাধারণ হিসাবে পরিণত হয়েছিল - আমি আমার সুইফট শ্রেণির কোনওটিকে পাবলিক ঘোষণা করি নি! ক্লাসগুলিতে আমি পাবলিক কীওয়ার্ডটি যুক্ত করার সাথে সাথে আমি ফ্রেমওয়ার্কের ভিতরে এবং বাইরে ক্লাস থেকে সেগুলি ব্যবহার করতে সক্ষম হয়েছি।

নোটের বিষয়টিও, ফ্রেমওয়ার্কের অভ্যন্তরে (কেবলমাত্র অন্য উত্তরের হিসাবে মি। ফাইলগুলির মধ্যে) আমাকে -Swift.h ফাইলটি আমদানি করতে হয়েছিল:

#import <FrameworkName/FrameworkName-Swift.h>

2
ফ্রেমওয়ার্কে আমি আরও নোট করেছি যে সুইফ্ট ক্লাসগুলি ব্যবহার করার জন্য তাদের এনএসবজেক্ট থেকে উত্তরাধিকারসূত্রে প্রাপ্ত হওয়া উচিত (এমনকি @objc সাহায্য করবে না) এবং সমস্ত পদ্ধতি / বৈশিষ্ট্যগুলি সর্বজনীন হতে হবে।
দিমিত্রিণিকোলায়েভ

3
কমপক্ষে বর্তমান এক্সকোড 7 প্রাক-প্রকাশে, আপনি এনএসবজেক্টের উত্তরাধিকার সূত্রে অবধি তারা উত্পন্ন সুইফ্ট শিরোনামে উপলব্ধ হবে না।
dmitrynikolaev

100% আমার সমস্যার সমাধান করেনি। প্রতিটি সমাধান "আপনার ক্লাসগুলি সর্বজনীন করুন"। আমি এটা করেছি. সময়কাল। এটি ফ্রেমওয়ার্কটি ব্যবহার করে এমন প্রকল্পগুলিতে সুইফ্ট ক্লাসগুলি প্রকাশ করে না।
datWooWoo

@ লেপমোমস, আপনার একটি প্রশ্ন লেখা উচিত এবং কোথাও একটি নমুনা প্রকল্প স্থাপন করা উচিত যা সমস্যাটি দেখায়, কেউ কী ঘটছে তা বুঝতে পারে ... আমি কেবল একটি সম্ভাব্য সমাধান হিসাবে আমার উত্তর দিয়েছি, কারণ এটি দৃশ্যমানতা ভুলটি আমি সবচেয়ে বেশি করি ঘন ঘন।
কেন্ডাল হেলস্টেটার জেলনার

2
ওহ হ্যাঁ, আমদানি সহ আপনার ইঙ্গিতটি শেষ পর্যন্ত আমার জন্য কৌশলটি করেছে! অনেক ধন্যবাদ!
endowzoner

14

আমারও একই সমস্যা ছিল। মনে হচ্ছে আপনার নিজের প্রথম সুইফ্ট ফাইল যুক্ত করার আগে আপনাকে সেটিংসকে (মডিউল এবং পণ্য মডিউলের নাম সংজ্ঞায়িত) সমন্বয় করতে হবে।

আপনি যদি এটির পরে করেন তবে এই প্রকল্পের জন্য "* -Swift.h" ফাইলটি উত্পন্ন হবে না এমনকি আপনি আরও সুইফট ফাইল যুক্ত করেন বা সুইফট ফাইলটি মুছুন এবং একটি নতুন তৈরি করুন।


আমি নিশ্চিত যে সত্য। আমি অনেকগুলি সুইফ্ট ফাইল তৈরির পরে 'মডিউলটি সংজ্ঞায়িত' সক্ষম করার সিদ্ধান্ত নিয়েছিলাম না এবং আমি একটি সুইসট্রা ঠিক ঠিক করতে সক্ষম হয়েছি।
মাইকেল পিটারসন

। আমি আসলে রিপোর্ট করার জন্য এই ঠিক সমস্যা আমার কাছে তা থাকত :( আমি আমার .swift এবং মুছে ফেলতে ছিল এটি পুনরায় যোগ করুন, এবং তারপর সব কাজ দুঃখ জাগানো করছি
কাপড় MC

2
এখন কি? আমি সুইফট এবং ওবিজেসি কোড উভয়ই পরিবর্তনের মাঝখানে আছি। আমার প্রকল্প- Swift.h আপডেট হচ্ছে না। এমনকি আমি হেডার ফাইলটি মুছতে চেষ্টা করেছি।
সুহাইল ভাট

2
আমাকে এটি লিখতে হয়েছিল, dev.iachieved.it/iachievedit/?p=980 । সুইফট ফাইল যুক্ত করার আগে বিল্ড সেটিংস আপডেট করার টিপটি আমার জন্য কী ছিল।
জো

এর অর্থ কি এই প্রকল্পটি পুনরায় তৈরি করতে হবে এবং যদি আমি এটি না করি তবে সবকিছু আবার যুক্ত করতে হবে? আমি যাই করুক না কেন, আমি * -Swift.h ফাইলটি উত্পন্ন করার জন্য দেখতে পাচ্ছি না।
কেগ্রেনিক

13

পুরানো অবজেক্ট প্রকল্পে সুইফ্ট ব্যবহার করার চেষ্টা করে আমার অভিজ্ঞতাগুলি ভাগ করে নেওয়ার অনুমতি দিন। আমি সেট Defines moduleকরতে হবে না YES

আমার ক্ষেত্রে আমার নিজের পক্ষে এটি নিশ্চিত করার দরকার ছিল যে সেখানে একটি ওজেক্ট ব্রিজিং শিরোলেখ রয়েছে। আমার তৈরি সেটিংসে কেবল উত্পন্ন ইন্টারফেস শিরোনামের নাম উপস্থিত ছিল।

ব্রিজিং হেডার অনুপস্থিত

এটি একটি মাই অ্যাপ্লিকেশন-সুইফট। ফাইলটি উত্পন্ন করার দিকে পরিচালিত করে তবে আমার সুইফ্ট ক্লাসগুলির কোনও চিহ্ন ছাড়াই।

অ্যাপল ডকুমেন্টেশন বলছে যে আপনার প্রথম সুইফ্ট ফাইল যুক্ত করার সময় আপনাকে একটি ব্রিজিং শিরোনাম তৈরি করার অনুরোধ জানানো হবে। ভাল, আমি ছিল না। আমি ম্যানুয়ালি একটি MyApp-Bridging-header.hফাইল যুক্ত করেছি এবং "উদ্দেশ্য-সি ব্রিজিং শিরোলেখ" ক্ষেত্রে এটিতে ইঙ্গিত করেছি। এটি আমার মাই অ্যাপ্লিকেশন-সুইফট। ফাইলটিকে আমার সুইফ্ট ক্লাসে পপুলেটেড করে তুলেছে।

দস্তাবেজগুলি: সুইফটকে উদ্দেশ্য-সি তে আমদানি করা হচ্ছে


হ্যাঁ, যে কারণে যাই হোক না কেন আমার প্রকল্পের সাথে খালি ব্রিজিং শিরোলেখ ফাইল যুক্ত করার পরেই আমার ওবিজিসি সুইফট। ফাইলটি সুইফ্ট শ্রেণীর শিরোনামগুলির সাথে তৈরি হয়েছিল!
অ্যান্ড্রু

একই অবস্থা. আমি খালি অবজেক্টিভ-সি ব্রিজিং শিরোনাম ফাইলটি যোগ না করা পর্যন্ত আমার সুইফট কোড উত্পন্ন * -Swift.h ফাইলটিতে আমদানি করা হয়নি।
নিক

12

এখানে মডিউলের নাম-সুইফট। জেনারেটের আর একটি বৈচিত্র রয়েছে।

আমি আমার প্রকল্পে আইওএস চার্টগুলি অন্তর্ভুক্ত করার সিদ্ধান্ত নিয়েছি তবে একই ডিরেক্টরিতে উত্সগুলি মিশ্রিত করতে চাই নি, তাই আমি আমার কোডের প্রকল্প ফোল্ডারের পাশে চার্টস প্রকল্প ফোল্ডারটি রেখেছি। আমি চার্টস প্রকল্পটি আমার প্রকল্পের নেভিগেটর বারে টেনে এনে সাধারণ প্রকল্প সেটিংসে আমার প্রকল্পের টার্গেটের এম্বেডড বাইনারি তালিকার ফ্রেমওয়ার্কটি অন্তর্ভুক্ত করেছি এবং বিল্ড অপশন বিভাগে আমার প্রকল্পের বিল্ড সেটিংস ট্যাবে এম্বেডড কন্টেন্টযুক্ত সুইফট কোড স্যুইচকে হ্যাঁ সেট করে রেখেছি ।

আমার প্রকল্পের মডিউল নাম-সুইফট। ফাইলটি এখানে অন্য যে কোনও স্যুইচ বা সেটিংসের পরামর্শ দিয়েছিল তা বিবেচনা করে না। পরিশেষে, ল জেডের -Swift.h ফাইলগুলি অনুসন্ধান করার পদ্ধতিটি ব্যবহার করে আমি দেখেছি যে Charts.framework / Headers / এ আমার প্রকল্পের এক্সকোড বিল্ড ডিরেক্টরিতে গভীরভাবে একটি চার্টস-সুইফট। ফাইল তৈরি করা হচ্ছে /

আমার প্রকল্পের উত্স ডিরেক্টরিতে কোডটি অন্তর্ভুক্ত না করে ড্যানিয়েল গিন্ডির আইওস-চার্টস সুইফট প্যাকেজটি ব্যবহার করার সমাধানটি যুক্ত করা ছিল:

#import "Charts/Charts-Swift.h"

আমার প্রকল্পের ডেটা চার্টিং মডিউলগুলিতে।


আইওএস চার্টে সরঞ্জামের টিপটি পরিবর্তন / কাস্টমাইজ করা সম্ভব? যদি হ্যাঁ তবে আপনি একটি উদাহরণ দিতে পারেন?
অমিত চৌহান

12

ফাইলের নামটি সর্বদা আপনার টার্গেটের নামের আগে থাকে। এটি পণ্যের নাম হিসাবে উল্লেখ করা হয় তবে ব্যবহারিকভাবে এটি টার্গেটের নাম। সুতরাং আপনি যদি এটির জন্য একটি নতুন লক্ষ্য তৈরি করতে চান তবে that_target-Swift.hফাইলটি প্রত্যাশার জন্য প্রস্তুত থাকুন ।

এটি পরিচালনা করার একটি উপায়

  1. আপনার প্রতিটি টার্গেটের জন্য একটি প্রিপ্রোসেসর যুক্ত করুন যা আপনার লক্ষ্যটির নিজের নাম (ফাঁকা ছাড়াই)। যাত্রা। MY_TARGET=1। প্রকল্পের সেটিংসে এটি যুক্ত করুন -> আপনার প্রতিটি লক্ষ্যবস্তুর জন্য সেটিংস-> বিল্ড সেটিংস-> প্রিপ্রোসেসর ম্যাক্রো।
  2. আপনি যদি কোনও পিসিএইচ ফাইল ব্যবহার করেন,

এই লাইনগুলি PCH ফাইলে যুক্ত করুন

#if MY_TARGET==1
#include "My_Target-Swift.h"
#elif THAT_TARGET==1
#include "That_Target-Swift.h" 
#endif

পিসিএইচ ফাইল ব্যবহারের সুবিধা হ'ল আপনাকে সর্বত্র শিরোনাম অন্তর্ভুক্ত করতে হবে না।

  1. আপনি যদি কোন পিসিএইচ ফাইল ব্যবহার না করে থাকেন তবে কেবল একই শিরোনামগুলিকে একটি একক শিরোনামে যুক্ত করুন এবং যেখানে আপনি সুইফ্ট ক্লাস ব্যবহার করতে হবে সেখানে সেই শিরোনামটি অন্তর্ভুক্ত করুন।

এটি ঠিক কাজ করা উচিত।


আমি সরাসরি আপনার উত্সে শিরোনাম আমদানি করে এই সমাধানটি ব্যবহার করতে চাই। আমার একটি জটিল প্রকল্প কাঠামো রয়েছে যেখানে একই উত্স কোডটি একাধিক লক্ষ্য / প্রকল্পগুলি দ্বারা ব্যবহৃত হচ্ছে। এটি আমার কোড জুড়ে একটি অগোছালো #if # অন্য বিবৃতি যুক্ত করা এড়িয়ে চলে। উত্তর করার জন্য ধন্যবাদ!
রায়ান 17

এটি আমার দিনকে বাঁচিয়েছিল। আমি "সামথিং-সুইফট-শিরোনাম h" ফাইলটিতে 5 টি লাইন কোড রেখেছি ( includeএটিতে) তারপরে আমি এই নতুন ফাইলটি যেখান থেকে আমার প্রয়োজন তা আমদানি করি। আমি চক্রীয় নির্ভরতা এড়াতে এবং .m ফাইলে সুবিধার শিরোনামটি ব্যবহার করার জন্য এটিটিকে PCH বা কোনও .h ফাইলের মধ্যে না রাখার পক্ষপাতী।
সিটিয়েজ

অনেক মাত্রা উপর ভুল। প্রথমত, .pchফাইলগুলি ভারী নিরুৎসাহিত করা হয় । দ্বিতীয়ত, ফাইলের নামটিতে পণ্যের নাম এবং লক্ষ্যটির নাম মোটেও নেই। এটি একটি কাকতালীয় ঘটনা হতে পারে যে এটি একই, তবে এটি পণ্যের নাম ব্যবহার করেছে!
Iulian Onofrei

10

যদি এক্সকোড প্রকৃতপক্ষে আপনার-সুইফট এইচ শিরোলেখ তৈরি করে (ডেরিভেডাটার অভ্যন্তরে গভীর) তবে এটি আপনার সুইফ্ট ক্লাসগুলিকে উল্লেখ করে না, নিশ্চিত করুন যে আপনারও একটি ব্রিজিং শিরোনাম সংজ্ঞায়িত হয়েছে। আমি ডকগুলি যেভাবে পড়লাম তা কেবল সুইফট থেকে অবজেক্টিভ-সি কল করার জন্য আমার প্রয়োজন ছিল, তবে উদ্দেশ্যটি-সি থেকেও সুইফট কল করার জন্য এটি প্রয়োজনীয় বলে মনে হচ্ছে।

আমার উত্তর দেখুন: https://stackoverflow.com/a/27972946/337392

সম্পাদনা: এটি সর্বজনীন বনাম অভ্যন্তরীণ প্রবেশাধিকার সংশোধনকারীদের কারণে, কারণ শেষ পর্যন্ত আমি অ্যাপল ডক্সে ব্যাখ্যা করে দেখেছি: -

ডিফল্টরূপে, উত্পন্ন শিরোনামটিতে পাবলিক সংশোধক হিসাবে চিহ্নিত সুইফট ঘোষণার জন্য ইন্টারফেস রয়েছে। এতে যদি আপনার অ্যাপ্লিকেশন টার্গেটটির একটি উদ্দেশ্য-সি ব্রিজিং শিরোনাম থাকে তবে এটি অভ্যন্তরীণ সংশোধক হিসাবে চিহ্নিত রয়েছে।


হ্যাঁ, এটি সত্যই সহায়তা করেছে। আমি এটা জানতাম না। আমি ভেবেছিলাম, সুইফট ইউজ-কেস থেকে এটি কেবল ওবজে-সি এর জন্য প্রয়োজন।
নোডপন্ড

সাহায্য করতে পারলে খুশি. আমি উত্তরটি সম্পাদনা করেছি কারণ যেহেতু আমি এই আচরণের কারণ খুঁজে পেয়েছি।
এচেলন

7

এখানে প্রচুর লোকের কী রয়েছে তা দ্বিতীয়, কিন্তু প্রাসঙ্গিক স্ক্রিন শট যুক্ত করা। সুইফ্ট এবং ওবজে-সি কোড অবশ্যই একসাথে থাকতে পারে। এটি কোনও বা কোনও খেলা নয়।

আপনার উদ্দেশ্য-সি-তে সুইফ্ট ফাইলগুলি অ্যাক্সেস করার জন্য আপনাকে যা করতে হবে তা হ'ল এই কলটি আপনার ওজেজে-সি ফাইলে (.m / বাস্তবায়ন ফাইলে) যুক্ত করা:

#import "{product_module_name}-Swift.h"

(যেখানে {product_module_name your আপনার প্রকল্পের পণ্য মডিউল নাম উপস্থাপন করে)। আপনার পণ্যের মডিউলের নাম অনুমান করার চেষ্টা করার চেয়ে বা স্পেস এবং বিশেষ অক্ষরগুলির সাথে কোণার কেসগুলি বের করার চেষ্টা করুন, কেবলমাত্র প্রকল্পের বিল্ড সেটিংস ট্যাবে যান এবং "পণ্য মডিউল নাম" টাইপ করুন - পরিদর্শক আপনার কাছে আপনাকে প্রকাশ করবে। আমার এমন কিছু ছিল যা আমি আশা করি না। আপনি বিভ্রান্ত হলে এই স্ক্রিন শটটি পরীক্ষা করে দেখুন।

এখানে চিত্র বর্ণনা লিখুন

এবং ওফজে-সি কোডটি সুইফটে কাজ করার জন্য আপনাকে কেবল একটি ব্রিজিং শিরোলেখ ফাইল যুক্ত করতে হবে এবং সেখানে প্রাসঙ্গিক ওবজ-সি হেডার আমদানি করতে হবে।


1
এটা করা উচিত নয় #import?
Iulian Onofrei

আসুন বলে নিই যে আমার প্রকল্পের নাম এবিসি, তারপরে "এবিসি-সুইফট এইচ", অবশ্যই আমার প্রকল্পে উপস্থিত থাকতে হবে? আমি এটি খুঁজে পাচ্ছি না। ম্যানুয়ালি এটি তৈরি করার দরকার আছে? আমি স্ব-স্বরে লিখিত একটি কোকো পোড সহ আমার নিজের কোনও সুইফ্ট ফাইল তৈরি করছি না।
এনআর 5

ব্রিজিং শিরোলেখ (আপনার ক্ষেত্রে, এবিসি-সুইফট।) স্বয়ংক্রিয়ভাবে তৈরি হয় না। আপনি যখন কোনও ওজেজে-সি প্রকল্পে আপনার প্রথম সুইফ্ট ফাইলটি তৈরি করার চেষ্টা করেন, এক্সকোড সাধারণত আপনাকে একটি যুক্ত করতে অনুরোধ করে। আপনি এখানে নিজের মতো একটি ব্রিজিং শিরোলেখ তৈরি করতে পারেন ('ব্রিজিং শিরোলেখের জন্য নিয়ন্ত্রণ + চ'): বিকাশকারী
অ্যাপ্লিকেশন / লাইব্রেরি / কনটেন্ট / ডকুমেন্টেশন / সুইফট/…

5

সবচেয়ে গুরুত্বপূর্ণ বিষয়টি এই ফাইলটি অদৃশ্য !!! কমপক্ষে এটি Xcode6 বিটা 5 এ রয়েছে। আপনার কর্মক্ষেত্রে "আপনারমডিউল-সুইফট। H" নামে কোনও ফাইল থাকবে না। কেবলমাত্র আপনার মডিউলের নাম আছে তা নিশ্চিত করুন এবং হ্যাঁতে সেট করা মডিউলটিকে সংজ্ঞায়িত করুন এবং এটি আপনার উদ্দেশ্য-সি শ্রেণিতে ব্যবহার করুন।


5

ঠিক আছে, এখানে আপনার সত্যিকারের প্রয়োজনীয় সমস্ত জিনিস রয়েছে!

1. আপনার যুক্ত করা সমস্ত সুইফ্ট ফাইলগুলি সরান এবং কোনও ত্রুটি ছাড়াই কোডটি সংকলন করুন।

----------

এখানে চিত্র বর্ণনা লিখুন

----------

2. "প্রকল্পগুলি" বিল্ড সেটিংসে যান এবং পণ্যের মডিউলটির নাম সেট করুন। প্রকল্পের অবশ্যই একটি পণ্য মডিউল নাম থাকা উচিত যাতে স্থানগুলি অন্তর্ভুক্ত থাকে না।

----------

এখানে চিত্র বর্ণনা লিখুন

----------

৩.ডাইফাইনস মডিউলটি অবশ্যই আপনার প্রকল্পে প্যাকেজিংয়ের অধীনে বিল্ড সেটিংসে হ্যাঁ সেট করতে হবে এবং লক্ষ্য নয়!

----------

এখানে চিত্র বর্ণনা লিখুন

----------

4. এখন একটি সুইফ্ট ফাইল বা একটি ভিউ কন্ট্রোলার তৈরি করুন, ফাইল-> নতুন ফাইল->

----------

এখানে চিত্র বর্ণনা লিখুন

----------

এটি একটি ব্রিজিং-শিরোনাম তৈরি করতে বলবে, এটি তৈরি করার অনুমতি দিন। আপনি যদি একবার এটি অস্বীকার করে থাকেন তবে আপনাকে ম্যানুয়ালি একটি-ব্রিডিং-শিরোনাম যোগ করতে হবে

5. নিয়ামকটিতে @objc যুক্ত করুন, সংকলককে বলতে যে কিছু সুইফট ফাইল রয়েছে, যা ObjectiveC- এর কাছে প্রকাশ করা দরকার

----------

এখানে চিত্র বর্ণনা লিখুন

----------

B. প্রকল্পটি তৈরি করুন এবং যে কোনও অবজেক্টসি নিয়ন্ত্রণকারীতে # ইমপোর্ট "-Swift.h" আমদানি করুন এবং এটি কার্যকর হবে! আসল ফাইলটি দেখতে আপনি এটিতে কমান্ড-ক্লিক করতে পারেন!

----------

এখানে চিত্র বর্ণনা লিখুন

----------

আশাকরি এটা সাহায্য করবে!


>> আপনি আসল ফাইলটি দেখতে এটিতে কমান্ড-ক্লিক করতে পারেন! এটি দুর্দান্ত
জাগান

4

এই উত্তরটি ব্যবহার-কেসটিকে সম্বোধন করে যেখানে আপনার ইতিমধ্যে কিছু উদ্দেশ্যমূলক সি কোড থাকতে পারে যা সুইফ্ট ক্লাসগুলিতে কল করে এবং তারপরে আপনি এই ত্রুটিটি পাওয়া শুরু করেন।

ইস্যু ঠিক করতে কিভাবে

নিম্নলিখিত পদক্ষেপগুলি শেষ পর্যন্ত আমার জন্য সমস্ত সমস্যার সমাধান করে। আমি উপরে "মুরগী ​​এবং ডিম" উল্লেখ করে কারও উপরে পড়েছি এবং এটি ঠিক সেই ধারণা যা আমাকে এই পদ্ধতিতে পরিচালিত করেছিল। এই সুস্পষ্ট প্রক্রিয়াটি দেখায় যে শিরোনামটি উত্পন্ন হওয়ার পরে অবধি কোনওটিকেই উদ্দেশ্য সংক্রান্ত সি কোড রেফারেন্সিং সুইফ্ট ক্লাসগুলি সরিয়ে ফেলতে হবে।

  1. আপনার উদ্দেশ্য-সি বাস্তবায়ন ফাইলে # পণ্যবহুল "ProductModuleName-Swift.h" বিবৃতি মন্তব্য
  2. সুইফ্ট ক্লাসে অবজেক্টিভ-সি প্রয়োগকারী ফাইলের কোনও রেফারেন্স মন্তব্য করুন
  3. ক্লিন অ্যান্ড বিল্ড
  4. সমস্ত ত্রুটি / সতর্কতা সমাধান করুন
  5. # ইম্পোর্ট "প্রোডাক্টমডিউলনেম-সুইফট। एच" বিবৃতিতে মন্তব্য সরান
  6. পরিষ্কার করুন এবং বিল্ড করুন (সফলভাবে বা অন্য কোনও ত্রুটিগুলি সমাধান করুন, যাচাই করুন যে আপনি এই মুহুর্তে অবজেক্টিভ সি তে কোনও সুইফ্ট ক্লাস উল্লেখ করছেন না so যদি অস্থায়ীভাবে এগুলি মন্তব্য করে)
  7. যাচাই করে নিন যে "প্রোডাক্টমডিউলনেম-সুইফট.এইচ" "আমদানি" প্রোডাক্টমডিউলনেম-সুইফট। "বিবৃতিটির শ্রেণি নামের উপর সিএমডি-ক্লিক করে উত্পন্ন হয়েছে is
  8. উদ্দেশ্য-সি বাস্তবায়ন ফাইলে কোড রেফারেন্সিং সুইফ্ট ক্লাসের মন্তব্যটি সরান।
  9. সাধারণ হিসাবে পরিষ্কার করুন এবং বিল্ড করুন ("ProductModuleName-Swift.h" উত্পন্ন করা উচিত এবং আপনার উদ্দেশ্য-সি কোড রেফারেন্সিং সুইফ্ট ক্লাসগুলি স্বাভাবিক হিসাবে ব্যবহার করা যেতে পারে)

নোটা বেনি: আন্ডারস্কোরগুলিতে স্পেস পরিবর্তন করার বিষয়ে এবং উপরে বর্ণিত মডিউলটিকে ইয়েস হিসাবে সংজ্ঞায়িত করা সম্পর্কিত উত্তরগুলি এই প্রক্রিয়াটি সম্পাদন করার সময় এখনও প্রযোজ্য, যেমন অ্যাপল ডকুমেন্টেশনে বর্ণিত নিয়মগুলি রয়েছে ।

ব্রিজিং হেডার পাথ

একটি ত্রুটিতে, বিল্ড প্রক্রিয়া চলাকালীন প্রোডাক্টমডিউলনাম-ব্রিজিং-শিরোলেখ ফাইলটি খুঁজে পাওয়া যাচ্ছিল না। এই সত্য একটি ত্রুটি উত্পন্ন

<অজানা>: 0: ত্রুটি: ব্রিজিং শিরোলেখ '/ ব্যবহারকারী / অংশীদারি / ওয়ার্কিং / অ্যাবসি / অ্যাবসি- ব্রিজিং- হেইডার।' উপস্থিত নেই

ত্রুটির ঘনিষ্ঠ পরিদর্শন ইঙ্গিত দেয় যে ফাইলটি বর্ণিত অবস্থানে কখনও উপস্থিত থাকতে পারে না কারণ এটি আসলে ( একটি ভুল পথে ) অবস্থিত ছিল

'/Users/Shared/Working/abc/abc/abc-Bridging-Header.h'। ম্যানুয়ালি সংশোধন করতে লক্ষ্য / প্রকল্পগুলি বিল্ডিং সেটিংসের একটি দ্রুত অনুসন্ধান এবং abc-swift.h ফাইলটি আবার স্বয়ংক্রিয়ভাবে উত্পন্ন হয়েছিল।

বিল্ড সেটিংস


1
আপনার প্রকল্পটি যদি এত বড় হয় যে অবজেক্টিভ সিতে সুইফট কোডের সমস্ত রেফারেন্স মন্তব্য করা অবৈধ?
অ্যান্ড্রু মরিস

3

আপনাকে উদ্দেশ্য-সি ক্লাসে একটি শিরোনাম আমদানি করতে হবে, যা:

#import “ProductModuleName-Swift.h”

এটি স্বয়ংক্রিয়ভাবে উত্পন্ন হয়, রেফারেন্সে এটি বলে যে "আপনার টার্গেটে থাকা যে কোনও সুইফট ফাইলগুলি এই আমদানির বিবৃতি সম্বলিত উদ্দেশ্য-সি। এম ফাইলগুলিতে দৃশ্যমান হবে।"


24
তবে, যখন আমি এটি করি, তখন আমি একটি বিল্ড ত্রুটি পাই, অ্যাপনাম-সুইফট.ই বিদ্যমান নেই। অন্যদিকে, অ্যাপনাম-ব্রিজিং-শিরোনাম। উপস্থিত রয়েছে।
ডেভিড ক্রিস্টেনসেন

5
@ ডেভিডক্রিস্টেনসেন: আপনি কি এর সমাধান পেয়েছেন? যেমন আমি একই ইস্যুতে
আটকেছি

2

প্রকল্পে একটি আসল ফাইল তৈরি হয় না ([ProductModuleName] -Swift.h)। সিএমডি + ক্লিক করুন আমদানি ক্লিক করুন এটি ফ্লাই-এ (এবং মেমোরিতে) তৈরি করে যাতে আপনি কীভাবে লিঙ্কেজটি সম্পন্ন হয় তা দেখতে পারেন বা কোনও এক্সকোড ক্যাশে ডিরের কোথাও একটি ফাইল খোলেন, কিন্তু এটি প্রকল্পের মধ্যে নেই।

আপনাকে মডিউল প্রকল্পের প্রোপ (টার্গেটের বিল্ড সেটিংসে) হ্যাঁ সেট করতে হবে এবং যদি আপনার মডিউলের নামের ফাঁকা বা ড্যাশ থাকে - [ProductModuleName] -Swift.h ফাইলের সমস্ত আমদানিতে _ ব্যবহার করুন।

আপনি এটি সমস্ত .h এবং .m ফাইলগুলিতে আমদানি করতে পারেন যেখানে আপনি সুইফট প্রকারগুলি ব্যবহার করেন বা আপনি .pch এ আমদানি করতে পারেন।

সুতরাং যদি আমার মডিউলটির (প্রকল্পের) নাম "পরীক্ষার প্রকল্প" রাখা হয়, আমি আমার প্রকল্পের .pch ফাইলে (ঠিক সেখানে) এটিকে এটি আমদানি করব:

#import "Test_Project-Swift.h"

2

"যে কেউ ব্যবহার করেছেন তার জন্য কেবল একটি শীর্ষস্থানীয়" " সেখানে প্রকল্পের নাম। এক্সকোড "" প্রতিস্থাপন করবে। ব্রিজিং শিরোলেখ ফাইলের সুইফ্ট সংস্করণটির জন্য একটি আন্ডারস্কোর "_" দিয়ে। অদ্ভুতভাবে যথেষ্ট পরিমাণে ব্রিজিং-শিরোনাম। উত্পন্ন যা পিরিয়ডগুলিকে আন্ডারস্কোর দিয়ে প্রতিস্থাপন করে না।

উদাহরণস্বরূপ, My.Project নামের একটি প্রকল্পে নিম্নলিখিত ব্রিজিং শিরোনাম ফাইলের নাম থাকবে।

ব্রিজিং-শিরোনাম। (স্বয়ংক্রিয়ভাবে তৈরি)

My.Project-গণনার জমকালো অনুষ্ঠান-Header.h

Swift.h

My_Project.h

আমি আশা করি এটি যে কাউকে পিরিয়ড ব্যবহার করেছিল এবং আমার মতো আটকেছিল তাদের সহায়তা করে। এই ফাইলটি নিম্নলিখিত স্থানে পাওয়া যাবে।

ম্যাকিন্টোস এইচডি / ব্যবহারকারীরা / ব্যবহারকারী /Library/Developer/Xcode/DerivedData/My.Project-fntdulwpbhbbzdbyrkhanemcrfil/Build/Intermediates/My.Project.build/Debug-iphonesimulator/My.Project.build/DerivedSources

যত্ন নিবেন,

জন


2

প্রকল্পের অবশ্যই একটি মডিউল নাম থাকা উচিত ফাঁকা স্থানগুলি সহ। সংজ্ঞা দেয় মডিউলটি অবশ্যই প্যাকেজিংয়ের অধীনে বিল্ড সেটিংসে হ্যাঁ সেট করতে হবে। # গুরুত্বপূর্ণ বিবৃতিটি মন্তব্য করেছে:

তবুও যদি তখন "প্রোডাক্টমডিউলনেম-সুইফট এইচ" আমদানিতে আপনার ত্রুটি হয়

// # আমদানি করুন "ProductModuleName-Swift.h"

যা আমার সুইফট কোডে অন্যান্য ত্রুটিগুলির একটি গুচ্ছ প্রকাশ করেছিল।

একবার আমি এই নতুন ত্রুটিগুলি স্থির করেছি এবং উত্স বিল্ডিং সফলভাবে পেলাম, আমি # আমদানি এবং বিঙ্গোটিকে নিঃশর্ত করলাম! শিরোনামটি তৈরি এবং সঠিকভাবে আমদানি করা হয়েছিল :)


আমার সমস্যাটি হ'ল আমার সুইফ্ট কোডটিতেও আমার ত্রুটি ছিল, তবে আমি -সুইফট.এইচ ফাইলটি সংক্ষিপ্ত না করা পর্যন্ত এটি জানতাম না। ধন্যবাদ!
উইল

1

আমি একটি কৌশল পেয়েছি যা সর্বদা আমার উপর কাজ করে।

  1. আপনার #Delegate.h ফাইল এবং আপনার ProductName-Prefix.pch ফাইলে আপনার # আমদানি "ProductModuleName-Swift.h" তৈরি করুন Create এক্সকোড in এ এটি না থাকলে আপনি এটিকে দিয়ে এটিকে তৈরি করতে পারেন কেন এক্সকোড in এ প্রজেক্টনাম-প্রিফিক্স.পিচ স্বয়ংক্রিয়ভাবে তৈরি হয় না?
  2. আপনার কোডটি পরিষ্কার করতে কমান্ড + শিফট + কে করুন, যদি আপনি আপনার "ProductModuleName-Swift.h" সম্পর্কে কোনও ত্রুটি পেয়ে থাকেন তবে এটিকে appDelegate.h ফাইল থেকে মুছুন।
  3. আপনার কোডটি আবার পরিষ্কার করুন। এখন সমস্ত কিছুই কবজির মতো কাজ করবে
  4. যদি আপনি "ProductModuleName-Swift.h" সম্পর্কে আবার ত্রুটি পান তবে এখন appDelegate.h ফাইলে আবার তৈরি করুন এবং আপনার কোডটি আবার পরিষ্কার করুন।

আপনি যখনই এই ত্রুটিটি চুপ করে রাখেন ততবার এই কাজটি করুন (অ্যাপডেলিগেট.এইচ ফাইল থেকে "প্রোডাক্টমডিউলনেম-সুইফট।" মুছে ফেলুন এবং আপনার কোডটি সাফ করুন) Do


1

আমি এই সমাধান খুঁজে পেয়েছি

  • SwiftBridge.h তৈরি করুন
  • # ইমপোর্ট "প্রোডাক্টমডিউলনেম-সুইফট। एच" রাখুন
  • এই .h ফাইলটিকে সর্বজনীন করুন (গুরুত্বপূর্ণ) ফাইলটি নির্বাচন করুন -> ফাইল পরিদর্শক (ডান বার) দেখান -> এটিকে সর্বজনীন করুন

এখন তুমি পার

#import "SwiftBridge.h"

ProductModuleName-Swift.h এর পরিবর্তে

এটি একটি কার্যক্ষম সমাধান, এক্সকোডের পরবর্তী সংস্করণের জন্য আমি মনে করি এই সমস্যাটি সমাধান হয়ে যাবে। শুভকামনা


কাজ করে না। সবেমাত্র চেষ্টা করে দেখেছি। লাইনটি #import “ProductModuleName-Swift.h”আসল অবজেক্টিভ-সি কোড ফাইলের পরিবর্তে স্যুইফটব্রিজেড ফাইলে একটি ত্রুটি নিয়ে আসে।
সুপারটেকনোবফ

1

আমার মডিউলটির নাম / উদ্দেশ্য-সি এর সুইফটের শিরোনামগুলির আমদানি নির্ধারণ করতে আমার বেশ কষ্ট হচ্ছে। আমি এখানে অনেক নিবন্ধ পড়েছি।

তবে এতে আপনার প্রকল্পের নামের অন্তর্ভুক্ত সমস্ত বিশেষ অক্ষর (এটি '।' বা একটি সংখ্যাসূচক বা কোনও স্থান) সহ সুনির্দিষ্ট উত্তর - লক্ষ্যটির বিল্ড সেটিংসের আওতায় " পণ্য মডিউল নাম " তে আপনার জন্য কাজ করবে এমন পাঠ্যটি আপনি খুঁজে পেতে পারেন ।

উদাহরণস্বরূপ, আমার টার্গেটের নামটি একটি সংখ্যাসূচক - "1mg" দিয়ে শুরু হয়েছিল এবং উপরে উল্লিখিত ক্ষেত্রটি আমার মডিউলটির নাম হিসাবে "_mg" দেখিয়েছে।

তাই আমি # ইম্পোর্ট "_mg-Swift.h" ব্যবহার করেছি এবং এটি কার্যকর হয়েছে।

টার্গেটের বিল্ড সেটিংসে থাকা পণ্য মডিউলটির নামটি সঠিক মডিউলটির নাম দেয় যা আপনার প্রকল্পের জন্য কাজ করবে


আপনি যদি কোনও স্ক্রিনশটের লিঙ্কে সম্পাদনা করতে পারেন তবে আমি আপনার উত্তরটি এটির জন্য প্রদর্শন করতে পারি।
সুপারবিসাইডম্যান

1

আমার ক্ষেত্রে আমাকে কমপক্ষে "ওএস এক্স 10.9" স্থাপনার লক্ষ্য নির্ধারণ করতে হয়েছিল এবং শিরোনামটি -Swift.hস্বয়ংক্রিয়ভাবে উত্পন্ন হয়েছিল। মনে রাখবেন যে আপনি যখন ডিপ্লোয়মেন্ট টার্গেট সংস্করণটি পরিবর্তন করেন, বিশেষত আপনার যখন একটি পুরানো এবং খুব বড় অবজেক্টিভ সি কোড বেস থাকে তখন আপনি প্রচুর অবমূল্যায়নের সতর্কতা পেতে পারেন। আমাদের ক্ষেত্রে XIB ফাইল ও দেখার ক্লাসেও আমাদের অনেক কাজ করার ছিল।


2
অন্যদের জন্য - আপনার টার্গেটের জন্য বিল্ড সেটিংসে সন্ধান করুন, সঠিক নামটি "মাইপ্রজেক্ট-সুইফট এইচ" পান - এটিই আপনাকে যথাযথ ওবিজেসি ফাইলগুলিতে "# অন্তর্ভুক্ত" মাইপ্রজেক্ট-সুইফট। एच "অন্তর্ভুক্ত করতে হবে। বিটিডব্লিউ, এটি উত্তরটি আমাকে সত্যিই সহায়তা করেছিল - কিছু পুরানো ওবজেক্টিভ সি ওপেন সোর্সকে রূপান্তর করতে কাজ করে
ডেভিড এইচ

0

যদি আপনি এর আগে “ProductModuleName-Swift.h” not foundত্রুটি সম্পর্কিত কোনও সমস্যা না নিয়ে একটি প্রকল্প তৈরি করতে সক্ষম হন এবং এখন আপনি সেই বাজে ত্রুটিগুলি পাচ্ছেন তবে কারণটি আপনার সাম্প্রতিক পরিবর্তনগুলিতে বসতে পারে।

আমার জন্য এটি ছিল (দুর্ঘটনাক্রমে) ভুল .swiftফাইল এনকোডিং। পরিবর্তনগুলি ফিরিয়ে নেওয়া এবং ম্যানুয়ালি ফিরিয়ে আনা, কাজটি করে।


0

এটি একটি সুস্পষ্ট পয়েন্ট হতে পারে (সম্ভবত খুব সুস্পষ্ট), তবে শিরোলেখ উত্পন্ন করার জন্য আপনার প্রকল্পে কমপক্ষে একটি সুইফট ফাইল থাকতে হবে। আপনি যদি বয়লারপ্লেট বা কনফিগার কোড লিখতে থাকেন তবে দ্রুত চালানোর জন্য আমদানি কাজ করবে না।


0

আমাকে আমার উদ্দেশ্য সি প্রকল্প থেকে ওয়াচওএস 2 সুইফট কোডটি মুছতে হয়েছিল। এবং কেবলমাত্র এর পরে এক্সকোড -Swift.h উত্পাদন করার প্রস্তাব দেয়


0

আমার অনুরূপ সমস্যা হয়েছিল তবে আমার প্রকল্পটি আগে সংকলন করেছিল এবং হঠাৎ কয়েকটি ফাইল কোড পরিবর্তনের পরে ত্রুটি পেয়েছে। আমার প্রকল্পে- swift.h ফাইলের জন্য কেন আমি 'ফাইল খুঁজে পাইনি' ত্রুটি পাচ্ছি তা বুঝতে সময় লাগল took আমি যে কোড পরিবর্তন করেছিলাম তাতে কিছু ত্রুটি ছিল। এক্সকোড 'ফাইলটি ত্রুটি খুঁজে পাওয়া যায় নি' এর পরিবর্তে সমস্ত সময় এই ত্রুটিটি নির্দেশ করে না। তারপরে পূর্ববর্তী সংস্করণ কোডের অনুলিপি পেয়েছি এবং আমি নতুন কোডের সাথে তুলনা করেছি এবং একে একে ফাইল একত্রীকরণ করেছি। প্রতিটি ফাইল একীভূত হওয়ার পরে ত্রুটিটি খুঁজে পেতে প্রকল্পটি মেনে চলে। সুতরাং নীচের লাইনটি হ'ল যদি আপনার কোডটিতে ত্রুটি থাকে তবে এক্সকোডটি মাইপ্রজেক্ট-সুইফট.চ ফাইলের জন্য 'ফাইলটি খুঁজে পাওয়া যায়নি ত্রুটি' প্রদর্শন করতে পারে। সম্ভবত আপনার প্রকল্পে সংকলন ত্রুটি রয়েছে। এই ত্রুটিটি পরিষ্কার করুন এবং এটি কাজ করবে।


0

যদি আপনি কোকোপডসের মতো কিছু ব্যবহার করে থাকেন (এবং প্রকল্পের চেয়ে ওয়ার্কস্পেসের বাইরে কাজ করছেন) তবে ওয়ার্কস্পেস এবং বিল্ডিং খোলার আগে প্রকল্পটি খোলার এবং এটি নির্মাণের চেষ্টা করুন। YMMV।


0

কখনও কখনও আপনাকে কেবল আনসেট করতে হবে এবং তারপরে আবার اعتراض-সি। মি ফাইলটিতে লক্ষ্য সদস্যতার সেট করতে হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.