এক্সকোড 8 বিটা 3 লেগ্যাসি সুইফট ইস্যুটি ব্যবহার করুন


201

আমার এক্সকোড 8 বিটা 3 তে একটি উদ্দেশ্য-সি প্রকল্প রয়েছে আপডেট করার পরে, যখনই আমি নির্মাণের চেষ্টা করি আমি নিম্নলিখিত ত্রুটিটি পাই:

"লিগ্যাসি সুইফট ল্যাঙ্গুয়েজ ভার্সনটি ব্যবহার করুন" (SWIFT_VERSION) যে লক্ষ্যগুলি সুইফট ব্যবহার করে তাদের জন্য সঠিকভাবে কনফিগার করা প্রয়োজন। একটি সুইফ্ট সংস্করণ চয়ন করতে [সম্পাদনা করুন> রূপান্তর করুন> বর্তমান সুইফ্ট সিনট্যাক্সে…] মেনুটি ব্যবহার করুন বা বিল্ড সেটিংসটি সরাসরি বিল্ড সেটিংটি কনফিগার করতে ব্যবহার করুন।

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

আমার ওএসএক্স 10.12 বিটা 2 চালাওয়ার বিষয়টিও উল্লেখ করা উচিত।


আমিও এই সমস্যাটি নিয়ে
আসছি

উত্তর:


364

আপনি যদি কোকোপড ব্যবহার করছেন এবং আপনি যখন যা করছেন প্রতিটি সময় এটি স্বয়ংক্রিয়ভাবে ঠিক হয়ে যেতে চান pod install, তবে আপনি আপনার পডফাইলের শেষে এই লাইনগুলি যুক্ত করতে পারেন:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '3.0'
        end
    end
end

সম্পাদনা: আপনি যদি কোকোপডস v1.1.1 বা তার পরে ব্যবহার করেন তবে এই সমস্যাটি এখন ঠিক করা হয়েছে। ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESআপনার মূল প্রকল্প লক্ষ্যগুলি থেকে সেটিংসটি সরিয়ে দিতে ভুলবেন না ।


24
আপনি যদি আপাতত আপনার কোডবেজে ২.৩ ব্যবহার করার চেষ্টা করছেন তবে দুর্দান্ত সমাধানের 2.3পরিবর্তে ব্যবহার করুন 3.0! এই কার্যকরভাবে তোলে "Use Legacy Swift Language Version"করার No (অথবা আপনাকে এটি পরিবর্তন যদি 2.3এটা Yes)। এই বিকল্পটির সুবিধা হ'ল প্রতিবার আপনি যখন pod installসেটি সেটিংসটি স্বয়ংক্রিয়ভাবে সেট করেন! অসাধারণ. আমি ওবজ-সি প্রকল্পগুলিতেও SWIFT_VERSIONসেট আপ করতে দেখছি । আমি ধরে নিচ্ছি যে কোনও প্রতিকূল প্রভাব নেই?
Herbal7ea

8
এটি দুর্দান্ত, তবে এটি বেশ ঝামেলার বিষয় যে স্ট্যাকওভারফ্লোতে রুবি বিশেষজ্ঞ ছাড়া হাজার হাজার এবং কয়েক মিলিয়ন প্রকল্প এসএল হয়। বিল্ড সেটিংস ব্যবহার করে আমি প্রতিটি মডিউলে এবং পড প্রকল্পে XCode সেটিংটি SWIFT_VERSION ম্যানুয়ালি পরিবর্তিত করেছিলাম এবং এটি কার্যকর হয়নি but অর্থ লুকানো ঝামেলা জাদু। আমি ওটা ঘৃণা করি.
বেসজেন

5
আমি আপনাকে আক্ষরিকভাবে এই বিষয়ে
প্রপস

1
আমার চার্টস (সুইফটে), আফনেটওয়ার্কিং এবং আরও কিছু ওবজ-সি পোড সহ একটি ওবজ-সি প্রকল্প রয়েছে। আমি আমার পোড ফাইলে উপরে স্ক্রিপ্ট ব্যবহার করেছি। সুইফট সম্পর্কিত সমস্ত ত্রুটি / সতর্কতা চলে গেছে তবে এখন আমার প্রকল্পটি এএফএন নেটওয়াকিং ফ্রেমওয়ার্কটি খুঁজে পাচ্ছে না।
ইবনেটারিক

1
@ Mr.Bista দ্য সমাধান অনুমোদিত stackoverflow.com/a/38597681/2854405 এটি XCode সেটিংস থেকে কাজ। তবে আপনি এটি করতে পারেন এমন প্রতিটি পড রেপো যা আপনার কাছে প্রতিবার করার সময় থাকতে পারে pod install / update। এই সমাধান জিনিসগুলিকে দ্রুত করে তোলে। আপনি এখনই আপনার কোকোপডস সংস্করণটি আপডেট করতে পারেন: এটিও এই সমস্যাটি ঠিক করতে হবে।
Tulleb

119

আমি এটি ঠিক করার একটি উপায় খুঁজে পেয়েছি।

প্রকল্প বা লাইব্রেরির বিল্ড সেটিংসে যান এবং অনির্দিষ্ট না হ্যাঁ বা না থেকে সুইফট সংকলক সংস্করণ বৈশিষ্ট্য "ব্যবহার করুন উত্তরাধিকারী সুইফট ভাষা সংস্করণ" সেট করুন।

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


13
আমি আমার উদ্দেশ্য-সি প্রকল্পে এই বিকল্পটি দেখতে পাচ্ছি না
ব্রায়ান

আপনার ওবজ-সি প্রকল্পে কোনও সুইফট প্রকল্প গ্রন্থাগার রয়েছে?
রকডাসউইফট

2
আপনি যদি সুইফ্ট এবং কোকোপড ব্যবহার করছেন, কোকোপডগুলিতে উপরের কমান্ডটি কার্যকরভাবে এটি করে। আপনি যদি প্রতিবার এটি পরিবর্তন করতে না চান তবে আপনি pod installউপরে @Tulleb এর উত্তর ব্যবহার করার পরামর্শ দিই।
Herbal7ea

এখন আমার ত্রুটিটি একটি স্ব শ্রেণিতে সুইফ্ট সংকলক ত্রুটি
এডুয়ার্ডো অলিভারস

1
এই বিকল্পটি আর উপলব্ধ নেই।
হেমং

33

আমি এই সমস্যার জন্য আপাতত কিছুক্ষণ উপেক্ষা করে চলেছি এবং এর মধ্যে অন্য জিনিসগুলিতে কাজ করছি - অবশেষে আমি আমার সমস্যার সমাধান খুঁজে পেয়েছি।

যেহেতু আমার প্রকল্পটি অবজেক্টিভ-সি, আমি বুঝতে পারি যে আমি যে পডগুলি ব্যবহার করছি তার মধ্যে একটি সুইফট ব্যবহার করছিলাম, আমি প্রতিটি পডকে পরীক্ষা করেছিলাম এবং সেগুলির কোনওটিই ছিল না।

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

স্ক্রিনশট


1
আপনি এটি কিভাবে পেলেন? এক্সকোড এ সম্পর্কে কিছুই বলে না। তুমি আমাকে বাঁচালে.
রায়ান

2
আসলে আমার সমাধান এবং আমার ত্রাণকর্তা। ধন্যবাদ! বোকা ডিগ্রাফ কীভাবে অ্যাপল করডেটা মডেলগুলিকে স্বয়ংক্রিয়ভাবে 'সুইফটি' করে তোলে যখন পুরো অ্যাপটি উদ্দেশ্য-সি হয় ....
বব ডি গ্রাফ

18

এই সমস্যাটি Xcode-8.1 এও দৃশ্যমান। যখন আমরা এক্সটেনশন বা উইজেটের মতো নতুন টার্গেট যুক্ত করি এবং তৃতীয় পক্ষের গ্রন্থাগারটি কোকোপডগুলির সাহায্যে নতুন লক্ষ্যগুলিতে সংহত হয়। পড ইনস্টল করার পরে । আমরা উপরের মতো একই ত্রুটির মুখোমুখি হতে পারি।

প্রতিটি লাইব্রেরি বিল্ড সেটিং- এ ব্যবহারের লিগ্যাসি সুইফট ভাষা সংস্করণটি পরিবর্তন করুন

কোন

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


আমার ক্ষেত্রে সেটিংস হ্যাঁ সমস্যাটি সমাধান করতে লেগ্যাসি সুইফট ভাষা সংস্করণ ব্যবহার করুন।
জয়প্রকাশ দুবে

নিশ্চিত হোন যে প্রতিটি ইচ্ছার এই সমস্যাটি থাকার জন্য আপনি হ্যাঁ বা না সেট করেছেন .. আমার ক্ষেত্রে কোনও কাজ হয়নি
হ্যানজলো

এটি আমার পক্ষে কাজ করেছে। দয়া করে নিশ্চিত হয়ে নিন যে
আপনিও

@ জিজুটগ: - আমাদের সমস্ত লক্ষ্যমাত্রা পরীক্ষা করতে হবে। আবার নির্দেশ করার জন্য ধন্যবাদ।
শ্রাবণ

9

আপনি যদি Xcode 8 বা তার পরে ব্যবহার করেন

  1. বিল্ড সেটিংসে যান
  2. ব্যবহারের উত্তরাধিকারী সুইফট ভাষা সংস্করণটি সন্ধান করুন
  3. হ্যাঁ - সুইফট ২.৩
  4. না - সুইফট 3.0 এখানে চিত্র বর্ণনা লিখুন

5

পডফিলের শেষে কোডের নীচে যুক্ত করুন।

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['SWIFT_VERSION'] = '3.0'
    end
  end
end

4

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

স্পষ্টতই, আমার প্রকল্প.pbxproj ফাইলটিতে এখনও কিছু পুরানো সুইফট সংস্করণ নির্দিষ্ট করা আছে। দ্রুততম 3.0.1 নির্দিষ্ট করা হয়েছিল:

SWIFT_VERSION = 3.0.1;

আমি ইতিমধ্যে 3.0.2 ইনস্টল করেছি:

$ xcrun swift -version
Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1)
Target: x86_64-apple-macosx10.9

Sooo, আমি প্রকল্প-pbxproj ফাইলের সুইফট সংস্করণটি এতে পরিবর্তন করে এটি ঠিক করেছি:

SWIFT_VERSION = 3.0;

প্যাচ স্তরের সংস্করণ নির্দিষ্টকারকটি খুব নির্দিষ্ট ছিল বলে মনে হচ্ছে।


4

আমার ক্ষেত্রে আমি কেবল নিম্নলিখিত জিনিসগুলি করেছি

প্রকল্পের লক্ষ্য চয়ন করুন => বিল্ডিং সেটিং এ যান>> "সুইফট ল্যাঙ্গুয়েজ সংস্করণ" => অনুসন্ধান করুন বর্তমান সুইফট সংস্করণটির মান দিন

সবই এটি আমার ইস্যু স্থির করেছে

এই চিত্রটি অনুসরণ করুন


4

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

Here are the steps.
1=> select your target from Xcode
2=> go to build setting
3=> search for "Swift Language Version"
4=> change it to swift 3. (or accordingly.)

3

আপনি যদি আপনার প্রকল্পে বা কোনও সুইফ্ট তৃতীয় পক্ষের সুইফটের কোনও পুরানো সংস্করণ ব্যবহার করেন তবে "হ্যাঁ" তে "লিগ্যাসি সুইফট ল্যাঙ্গুয়েজ সংস্করণ ব্যবহার করুন" সেট করুন। "না" যদি আপনার প্রকল্পটি বর্তমান সুইফ্ট সংস্করণে আপলোড করে। আপনি যদি প্রতিটি সুইট সংস্করণ কনফিগার না করেন তবে প্রতিটি আপডেট এবং ইনস্টল করার পরে পড ফ্রেমওয়ার্কটি এটি নির্দিষ্ট করা দরকার to


2

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


2

আমার প্রকল্পটি সুইফটে লেখা আছে। আমি একই ত্রুটি পেয়েছিলাম fastlane। যা ঘটেছিল তা আমার এক্সকোড স্বয়ংক্রিয়ভাবে আপডেট হয়েছিল তাই আমাকে আমার প্রকল্পটি সুইফট 3.0 এ আপডেট করতে হয়েছিল to এক টন ত্রুটি পেয়েছি। ফিক্সিং এবং ডিবাগিংয়ে খুব বেশি সময় নিচ্ছিল এবং সেই মুহুর্তে এটির পক্ষে মূল্য ছিল না তাই আমি Xcode এর একটি পুরানো সংস্করণ ইনস্টল করার সিদ্ধান্ত নিয়েছি। আমার কোডটি ২.৩ এ রূপান্তরিত হয়েছে। তখন fastlane betaআর কাজ করছিল না। দেখা যাচ্ছে, আমার কমান্ড লাইন সরঞ্জামটি 7.3 এ সেট করা দরকার। এখানে চিত্র বর্ণনা লিখুন


1

আমি এই একই সমস্যাটি পেয়েছি এবং নিম্নলিখিতগুলি দ্বারা এটি সমাধান করেছি:

প্রকল্পে> বিল্ড সেটিংস:

Always Embed Swift Standard Libraries = $(inherited) Use Legacy Swift Language Version = YES

তারপরে আমার পডফাইলে:

config.build_settings['SWIFT_VERSION'] = '3.0'

এই তিনটি সেটিংস ব্যবহার করে সমস্ত সতর্কতা সরিয়ে দেওয়া হয়েছে এবং আমাকে সঠিকভাবে সংকলন করার অনুমতি দিয়েছেন।

সর্বাধিক অস্পষ্ট এবং সংকলনের জন্য আসলে কী অগ্রগতি পেয়েছে তা হ'ল এখানে পরামর্শ অনুসারে পোডফাইলে SWIFT_VERSION পরিবর্তন করে 3 থেকে 3.0 করা হয়েছে


1

এক্সকোড ৮ থেকে, আপনি সুইফট ২.৩ ব্যবহার করতে পারবেন যদিও এক্সকোড ৮ সুইফট ৩.x ডিফল্ট সুইফ্ট সংস্করণ হিসাবে ব্যবহার করে। সুইফট ২.৩ ব্যবহার করতে, বিল্ড সেটিং থেকে লিগ্যাসি সুইফট ল্যাঙ্গুয়েজ সংস্করণটি হ্যাঁ হ্যাঁ ব্যবহার করুন, তারপরে এক্সকড সেই প্রকল্পের টার্গেটের জন্য সুইফট ২.৩ ব্যবহার করবে।


1

জটিল সমাধানগুলি চেষ্টা করার আগে, আপনি কোকোপডসে নতুন হন এবং আপনি এই সমস্যাটি নিয়ে আসছেন কিনা তা করতে হবে এমন একটি প্রাথমিক পরীক্ষা।

আপনার প্রয়োজন হতে পারে:

  • আপনার পোডফিল আবার খুলুন
  • প্ল্যাটফর্মের জন্য লাইনটি কোনও '#' দিয়ে মন্তব্য করা হয়নি তা পরীক্ষা করে দেখুন। এটি অবশেষে এমন কিছুর মতো দেখা উচিত:

platform :ios, '10.1' # Put the right version and no #platform here use_frameworks! # For swift pod "MyPod" # Your mean pod :)

  • আপনার পডফিল সংরক্ষণ করুন, এক্সকোড বন্ধ করুন এবং pod installআবার চালান
  • আপনার প্রজেক্ট.এক্সকোর্সস্পেস খুলুন

সম্ভবত এটি ঠিক আছে।

যদি না হয়, আপনি উপরে যেতে পারেন ;-)


1

এক্সকোড ৮.৩.২ এ আপডেট করার পরে আমার একই সমস্যা হয়েছিল তবে "ব্যবহারের উত্তরাধিকারী সুইফট ল্যাঙ্গুয়েজ" বিকল্পটি চলে গেল। এটি এখন পরিবর্তনের বিকল্প বলে মনে হচ্ছে: সুইফট ল্যাং সংস্করণ

অ্যালামোফায়ার এবং অন্যান্য লিবস এবং সমস্ত কাজ ঠিক আছে এই ফিক্স ব্যবহার।


1

প্রকল্পের জন্য প্রকল্প বিল্ড সেটিং এ যান এবং দুটির নীচে টার্গেট করুন।

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
And
Swift Compiler - Version  = Swift 3

সর্বশেষে পরিবর্তন করুন Swift 3

ত্রুটি সমাধান হয়েছে।

এটি যদি আপনার ত্রুটি সমাধানের সমাধান করে তবে দয়া করে এটি পছন্দ করুন।


1

এক্সকোড 9 বিটাতে। প্রকল্প সেটিংসে যান, সেটিংস তৈরি করুন, সুইফট ভাষা সংস্করণটি অনুসন্ধান করুন। এক্সকোড 9-এ আপনাকে অবশ্যই উল্লেখ করতে হবে আপনি স্যুইফট ৩.২ বা সুইফট ৪ ব্যবহার করছেন কিনা।


আমার ৯.০ বি তে একটি প্রকল্প ছিল যেখানে প্রকল্প এবং সুইফট ৪-এর লক্ষ্য উভয়ই ত্রুটি তৈরি করতে থাকে, উভয়কে সুইফট ৩.২ এ সেট করে এটি সরিয়ে ফেলেছে এবং উভয়কে সুইফট ৪-এ পুনরায় সেট করা এখন ঠিক আছে, তাই কেউ ঠিকঠাক কাজ করতে পারে এবং তবুও একটি ত্রুটি পেতে।
সবুজ_কনাইট

1

আপনি যদি এখনও কাজ না করে পরিবর্তন ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESকরেন NOতবে এটি xcode ইস্যু হওয়ার কারণে, আপনার সমস্যা নয়। নিম্নলিখিত পদক্ষেপগুলি করছেন:

1. সতর্কতা লক্ষ্য ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESহতে সম্পত্তি পরিবর্তন YESকরুন

২. এটি বাম বারে একটি সতর্কতা প্রদর্শন করবে যা আপনাকে সাড়ে sw.০ এ পরিবর্তন করতে প্রস্তাব দেয়

3.পরে পরিবর্তন NO। প্রকল্পটি পুনর্নির্মাণ করুন, এক্সকোড অবশেষে আপনার পরিবর্তনটি সনাক্ত করুন NO!

এক্ষেত্রে সমস্যার সমাধান!

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