এক্সকোড 6 / বিটা 4: ফ্রেমওয়ার্ক লক্ষ্য সহ ব্রিজিং শিরোনামগুলি অসমর্থিত


131

আমি শুধু Xcode 6 বেটা 4 এ আপগ্রেড এবং একটি কাঠামো যে আমি অন্য দ্রুতগতি করার বিটা 2. দরুন লাইভ দেখেছে জন্য তৈরি আছে বাগ , আমি OBJ-সি কোড ব্যবহার করার প্রয়োজন ছিল। যদিও আপগ্রেড করার সময়, আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

ত্রুটি: ফ্রেমওয়ার্ক লক্ষ্য সহ ব্রিজিং শিরোনামগুলি অসমর্থিত

রিলিজ নোটগুলিতে আমি কিছুই দেখিনি, বা অন্য কোনও স্থানান্তরের পথ খুঁজে পাইনি। অন্য কেউ কি এটি দেখে সমাধানে এসেছেন?

আমি বুঝতে পারি যে বিটা 3 লাইভ দর্শনগুলির জন্য ফ্রেমওয়ার্কের প্রয়োজনীয়তা বাদ দিয়েছে, তবে আমি যদি এটি কাজ করতে পারি তবে এটি আমার ক্ষেত্রে বোধগম্য। আমি এটি ফ্যালব্যাক হিসাবে সরিয়ে ফেলতে পারি তবে বিটা 4 এ সম্পূর্ণরূপে ভাঙা না থাকলে যদি কোনও ফ্রেমওয়ার্ক ব্যবহার করা পছন্দ করি তবে।


"আমি বুঝতে পারি যে বিটা 3 ফ্রেমওয়ার্কের প্রয়োজনীয়তা অপসারণ করেছে"। কিভাবে?
এইচ এইচএন

2
(সরাসরি দেখার জন্য) - সম্পাদিত
ক্রিস কনভার

1
আমিও একই সমস্যায় পড়ছি।
সাইমন জার্মেই

2
বাহ, সেখানে আপনার সামান্য সম্পাদনাটি আমার জীবনকে আরও ভাল করে তুলেছে - এই পরিবর্তনের কথা শুনেনি (ফ্রেমওয়ার্কগুলির প্রয়োজনীয়তা দূর করে) কোথাও লাইভ দেখার জন্য এই সমস্ত কাঠামোর লক্ষ্য নিয়ে আমার মাথা বেঁধে রাখছিল। এই ক্রিস্কো এর জন্য আপনাকে অনেক ধন্যবাদ!
ইয়োনিক্স

উত্তর:


232

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

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

সুতরাং, এটি করুন:

  1. আপনার ব্রিজিং হেডার ফাইলটি সরান।
  2. কাঠামোর জন্য বিল্ড সেটিংসে ব্রিজিং হেডার ফাইলটির উল্লেখগুলি সরিয়ে দিন
  3. আপনার ছাতা ফাইলটিতে প্রয়োজনীয় শিরোনাম যুক্ত করুন ([প্রোডাক্টনাম] h)
  4. অন্তর্ভুক্ত ফাইলগুলিকে এর "বিল্ড পর্যায়সমূহ" বিভাগের "শিরোনাম" বিভাগে সর্বজনীন করুন।
  5. পরিষ্কার এবং পুনর্নির্মাণ।

দ্রষ্টব্য : "ছাতা শিরোলেখ ফাইল" এমন একটি ফাইল (নাম দেওয়া [productName] .h) যা সাধারণত কোনও কাঠামোর সমস্ত পাবলিক শিরোনামকে উপস্থাপন করে। এটি সাধারণত ফ্রেমওয়ার্কটিতে থাকা অন্যান্য শিরোনামগুলিতে # আমদানি বিবৃতিগুলির একটি তালিকা। এক্সকোডে, আপনি যদি UIKit.h খুলেন, আপনি একটি ছাতা ফাইলের একটি ভাল উদাহরণ দেখতে পাবেন।


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

1
@ জ্যাক্সি 7878 এই নথির "উদ্দেশ্য-সিটিতে সুইফট আমদানি করা" বিভাগটি দেখুন: বিকাশকারী
অ্যাপ্লিকেশন

4
@ ডিপফ্রিডটুইঙ্কি, আপনি যখন বলছেন: "আপনার ছাতা ফাইলটিতে প্রয়োজনীয় শিরোনাম যুক্ত করুন" তখন আপনি কোন ছাতা ফাইলটি উল্লেখ করছেন? ধন্যবাদ।
অ্যালান ম্যাকটিংওরা

2
এটাই আমার দরকার ছিল। তাদের সর্বজনীন বিভাগে যুক্ত করা ঠিক করা ছিল।
অলিভরেস

20
আমি কি তখন ধরে ধরেছি যে আমি যে কাঠামোটি আমার ফ্রেমওয়ার্কে প্রাইভেট রাখতে চাই যে একটি সুইফ্ট ক্লাস দ্বারা ব্যবহার করা উচিত তা এখন আমার ফ্রেমওয়ার্কটি ব্যবহার করে যে কারও কাছে প্রকাশ্য হতে হবে? আদর্শ সমাধান বলে মনে হচ্ছে না।
ইঙ্গিত

28

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

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

module AwesomeKitPrivate {  
  header "../InternalClass.h"
  export *
}

এরপরে সেটিংসটি ব্যবহার করে এটি এক্সকোডে অন্তর্ভুক্ত করা যেতে পারে:

SWIFT_INCLUDE_PATHS = $(SRCROOT)/AwesomeKit/ProjectModule  

2
অসাধারণ! ধন্যবাদ। সমস্ত শিরোনামকে সর্বজনীন করার চেয়ে অনেক বেশি পছন্দসই কৌশল।
ডেভিড এইচ


এটি সঠিক উত্তর ইমো তবে আপনি যা অর্জন করতে চাইছেন তার উপর নির্ভর করে আপনি অ্যাপল-সরবরাহিত কিছু ম্যাক্রোগুলি ব্যবহার করে পালাতে সক্ষম হতে পারেন যা সুইফট-ওজেজসি আন্তঃব্যক্তির সাহায্যে অনেকটা সহায়তা করে: বিকাশকারী.আপল /
জো সুজনিক

headerবিবৃতি একটি আপেক্ষিক পাথ গ্রহণ করে। আপনি যখন অন্য কাঠামোর শিরোনাম যুক্ত করতে চান তখন আপনি কী করবেন?
জর্জিওস

13

সুইফটে অবজেক্টিভ-সি আমদানি করা দেখুন ।

একই ফ্রেমওয়ার্ক থেকে সুইফটে অবজেক্টিভ-সি কোড আমদানি করতে

  1. প্যাকেজিং-এ বিল্ড সেটিংসের অধীনে, নিশ্চিত করুন যে ফ্রেমওয়ার্কের লক্ষ্য নির্ধারণের জন্য মডিউল সেটিংসটি "হ্যাঁ" তে সেট করা আছে।
  2. আপনার ছাতা শিরোনাম ফাইলটিতে, আপনি সুইফটে প্রকাশ করতে চান এমন প্রতিটি উদ্দেশ্য-সি শিরোনাম আমদানি করুন। উদাহরণ স্বরূপ:

        # আইম্পোর্ট "এক্সওয়াইজেড / এক্সওয়াইজেডকাস্টমসেল.এইচ"
        # আইম্পোর্ট "এক্সওয়াইজেড / এক্সওয়াইজেড কাস্টমভিউ.h।"
        # আইম্পোর্ট "এক্সওয়াইজেড / এক্সওয়াইজেডকাস্টমভিউ কন্ট্রোলআরএইচ"
    
  3. অন্তর্ভুক্ত ফাইলগুলিকে এর "বিল্ড পর্যায়সমূহ" বিভাগের "শিরোনাম" বিভাগে সর্বজনীন করুন।

  4. পরিষ্কার এবং পুনর্নির্মাণ।

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

let myOtherCell = XYZCustomCell()
myOtherCell.subtitle = "Another custom cell"

গুরুত্বপূর্ণ: "ছাতা শিরোনাম ফাইল" এর অর্থ ফাইল {মডিউলনেম h .h। বিটিডাব্লু, লক্ষ্যটির নাম হ'ল মডিউলনাম ule। ফ্রেমওয়ার্ক।


1
আমি আমার মডিউলগুলিতে সুইফট ফাইলের মধ্যে অবজেক্ট ফাইলগুলি ব্যবহার করতে চাই তবে আমি সেগুলি অন্য মডিউলগুলিতে প্রকাশ করতে চাই না। আমি কীভাবে এটি করতে পারি?
সাজ্জাদ হিছাইন খান

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