এক্সকোড 8 - আইবি ডিজাইনেবল - স্বয়ংক্রিয় বিন্যাসের স্থিতি রেন্ডার এবং আপডেট করতে ব্যর্থ হয়েছে, এজেন্ট ক্র্যাশ হয়েছিল


167

আমি সম্প্রতি এক্সকোড 8 এ আপগ্রেড করেছি এবং স্টোরিবোর্ডে আমার সমস্যা হচ্ছে।

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

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

এই মতামতগুলি কেবলমাত্র দর্শনগুলি যা কাস্টম দর্শন ব্যবহার করে TextFieldEffectsএবং BEMCheckboxআমি কোকোপড ব্যবহার করে আমদানি করেছি।


আপনি যে পডটি ব্যবহার করছেন তার জন্য সংগ্রহস্থলটি পরীক্ষা করে দেখুন এবং অন্যান্য ব্যবহারকারীদের মধ্যে এই সমস্যাটি প্রচলিত আছে কিনা তা দেখুন?
Zolnoor

এর কোন প্রাসঙ্গিক উত্তর?
মহসিন খুবাইব আহমেদ

1
আপনি ছেলেরা কোন workaround খুঁজে পেয়েছি?
ডুব দিন

দেখুন, সমস্যাটি আপনাকে এম্বেড করা লাইব্রেরির জন্য একটি ফ্যাট বিল্ডের প্রয়োজন হতে পারে । আমার উদাহরণে আমি সুইফার এম্বেড ছিল। স্বাভাবিকভাবেই আপনি একটি ফ্যাট বিল্ড (বিকাশের জন্য - সিমুলেটর / ফোন) এবং কেবলমাত্র ফোন অ্যাপ্লিকেশন (কেবল অ্যাপ স্টোরের জন্য, কেবল ফোন) রাখেন এবং টেস্টফ্লাইট ইত্যাদিতে জমা দেওয়ার প্রয়োজন হলে আপনি কেবল ফোন-এ স্যুইপ করেন I আমি এখনও প্রকল্পে কেবলমাত্র ফোন লাইব্রেরি ছিল !!!!! ডোহ! "সঠিক" ফ্যাটটি অদলবদল করতে সমস্যা স্থির করে।
ফ্যাটি

উত্তর:


179

কারণটি সনাক্ত করতে আপনি নিম্নলিখিতগুলির মধ্যে একটি ব্যবহার করতে পারেন:

  1. IBDesignablesAgentCocoaTouchএই ডিরেক্টরিতে লগগুলি সন্ধান করুন : ~/Library/Logs/DiagnosticReportsএবং কারণটি দেখুন।

দ্রষ্টব্য: ক্যাটালিনা সহ ব্যবহারকারীর জন্য: সন্ধান করুন IBDesignablesAgent-iOS_<DATE>-<MAC_NAME>.crash

  1. @IBDesignable UIViewআপনার স্টোরিবোর্ডে নির্বাচন করার সময় সম্পাদক -> ডিবাগ সিলেক্ট ভিউতে যান এবং স্ট্যাক ট্রেস দেখুন।

  2. ডেরিভ ডেটা ফোল্ডার মুছুন।

    Xcode Preference -> Location -> Derived Data
    /Users/YourMacName/Library/Developer/Xcode/DerivedData
    
  3. ক্লিন আপনার প্রকল্পের Shift + + Command + + Alt + + K

  4. আপনার প্রকল্পের বিল্ড Command + + B


35
এই পদ্ধতির ব্যবহার করে আমি কারণটি জানতে পেরেছি Fatal error: Use of unimplemented initializer 'init(frame:)' for class 'TestIBKit.Button'। আমি জানি না যে IBDesignablesAgentCocoaTouchপ্রক্রিয়া কলগুলি init(frame:), পরিবর্তে init?(coder aDecoder:)
ইয়েভেন ডাবিনিন 16

5
@ ইয়্যাভেনডুবিনিন আপনাকে ধন্যবাদ, এটি আমাকে সাহায্য করেছে। আমি init(frame:)আমার ইউআইবাটন সাবক্লাসে প্রয়োগ করার পরে সবকিছু ঠিকঠাক হয়েছিল
ডোরাইমন

2
এটি আমার সমস্যাটির সমাধান করেছে, তবে প্রাপ্ত তথ্যের মুছে ফেলার আগে আমাকে এক্সকোড ছাড়তে হয়েছিল
হুসাম

2
সেরা উত্তর থিম (ফ্রেম :) সাধারণ সমস্যা
মাইখাł জিয়োব্রো

1
এক্সকোড ছাড়ুন এবং ডেরিভডটা সাফ করুন। এটি সমস্যার সমাধান করেছে solved
মুবাশার

80

নিম্নলিখিতটি দ্বারা সমস্যাটি সমাধান করেছি:

  1. যাও File > Workspace settings
  2. "উত্পন্ন ডেটা" এর পাশের সামান্য ডান তীরটি ক্লিক করুন। এটি DerivedDataফোল্ডারটির অবস্থানটিতে ফাইন্ডার অ্যাপটি খুলবে ।
  3. DerivedDataফোল্ডারের ভিতরে যান এবং আপনার প্রকল্পের সাথে সংশ্লিষ্ট ফোল্ডারটি মুছুন।
  4. এক্সকোড থেকে প্রস্থান করুন এবং এটি আবার খুলুন।
  5. আপনার প্রকল্প পরিষ্কার করুন shiftcommandk
  6. আপনার প্রকল্প তৈরি করুন commandb
  7. আপনার স্টোরিবোর্ডটি খুলুন।
  8. যাও Editor > Refresh all views

আপডেট করা হয়েছে

কখনও কখনও সরাসরি Editor > Refresh all viewsকাজ করতে যান । যদি Refresh all viewsঅক্ষম থাকে তবে এক্সকোডটি ছেড়ে দিন এবং আবার চেষ্টা করুন।


এই পোস্ট করার জন্য আপনাকে ধন্যবাদ। আমি উত্সযুক্ত ডেটা একটি "পুরাতন স্কুল" কমান্ড লাইন মুছে ফেলা করেছি, কিন্তু সমস্যাটি অব্যাহত রয়েছে। আপনার পদ্ধতিটি ব্যবহার করা আমার জন্য সমস্যার সমাধান করেছে।
অ্যাড্রিয়ান

আমার জন্য জয়ের জন্য সমস্ত মতামত রিফ্রেশ করুন। ধন্যবাদ!
মাইক কে।

56

আমি কেবল ব্যর্থ হয়েছে এমন দৃশ্য মুছে ফেললাম এবং মুছে ফেলাতে পূর্বাবস্থায় + Z টিপুন এটা আমার জন্য কাজ করে.

যদি পরে ব্যর্থ দর্শনটি সম্পাদনা করা হয় তবে ত্রুটিটি আবার দেখা দিতে পারে, উপরেরটি আবার করুন।


6
এটি হাস্যকর কিন্তু এটি কাজ করে।
আনসারি

1
অসাধারণ!! আমার জন্য কাজ করেছেন
নূপুর শর্মা

1
কে জানে এটি উত্তর হতে পারে। এটি কাজ করেছিল আমি এখনও বিশ্বাস করতে পারি না
আসাদ আমোদী

37

আমি এই সমস্যাটির মুখোমুখি হয়েছি কোকোপড ২.০.০। সমাধানটি হ'ল শুঁটি আবার ইনস্টল করা (পুনরায় ইনস্টল করুন) একবার এই ত্রুটিটি দেখানো হয় বা আপনি এর পরিবর্তে কোকোপড ১.৪.০ ব্যবহার করতে পারেন। এটি 1.4.0 এ সূক্ষ্মভাবে কাজ করে (কমপক্ষে আমার পক্ষে))

হালনাগাদ:

পোডফাইলে নিম্নলিখিত স্ক্রিপ্ট যুক্ত করুন আমাকে 1.5.0.0 এ সমস্যাটি সমাধান করতে সহায়তা করে

post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings.delete('CODE_SIGNING_ALLOWED')
    config.build_settings.delete('CODE_SIGNING_REQUIRED')
  end
end

রেফারেন্স: https://github.com/Skyscanner/SkyFloatingLabelTextFeld/issues/201#issuecomment-381915911


100% সত্য। ১.৪.০ এ ডাউনগ্রেড করুন আমার জন্য সমস্যাটি সমাধান করুন।
ale_stro

4
কাজ করেছেন, ০.০.০ পোড।
আন্দ্রে ওশেভ

3
এটি s work for me, you should add শেষ - কোড শেষ।
মাহদী

1
আমার জন্যও কাজ করেছেন। সাফল্য না করে অন্য সমস্ত পরামর্শ দিয়ে চেষ্টা করেছি। পোডগুলির সাথে পরীক্ষিত 1.3.1
সাল

18

আমার @IBDesignableক্লাসে নিম্নলিখিত কোড যুক্ত করা কৌশলটি করেছে।

override init(frame: CGRect) {
    super.init(frame: frame)
}

এটি আমার পক্ষে কাজ করে। আসলে, আমি প্রসারিত করার জন্য দুটি ওভাররাইড যুক্ত করেছি UITextView। (1) init(frame: CGRect, textContainer: NSTextContainer?), (2) init?(coder aDecoder: NSCoder)। তারপরে পুনর্নির্মাণ এবং সতর্কতা (ত্রুটি) চলে গেছে। এমনকি বিল্ড ফোল্ডার পরিষ্কার করার প্রয়োজন নেই।
জন প্যাং

ধন্যবাদ! ভাল উত্তর)
জিওসদেব

13

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

'কনসোল' অ্যাপ্লিকেশনটি খুলুন, সাইডবার থেকে আপনার বর্তমান ম্যাকটি নির্বাচন করুন (এটি সম্ভবত ডিফল্টরূপে স্বয়ংক্রিয়ভাবে নির্বাচিত হবে) এবং তারপরে অনুসন্ধানের জন্য "আইবিএসসাইনআপডেট" অনুসন্ধান করুন এবং এন্টার টিপুন।

এইভাবে, প্রতিবার আপনি যখন কোনও IBDesignableরেন্ডার করতে না পারার জন্য একটি এক্সকোড ত্রুটি পান, ত্রুটি সম্পর্কে আরও বিশদ সহ আপনি একটি নতুন "আইবিএসসাইনআপডেট" এন্ট্রি পাবেন।

এটি অন্তত কীভাবে আমি আমার IBDesignableত্রুটিগুলি ডিবাগ করতে সক্ষম হয়েছিল !

কনসোল অ্যাপ্লিকেশন IBSceneUpdate ত্রুটিগুলি দেখাচ্ছে


1
অ্যাপ্লিকেশনটি এফআইআইআই হিসাবে টার্মিনালের চেয়ে প্রকৃত কনসোল।
কার্ল আপটন

ভালো বল ধরা! আমার উত্তর সম্পাদনা।
স্টিলাবৌরাস

11

আপনি যদি কাস্টম ইউভিউয়ের জন্য এক্সিব ফাইলটি ব্যবহার করেন। এটা চেষ্টা কর:

থেকে পরিবর্তন করুন

Bundle.main.loadNibNamed("UserView", owner: self, options: nil)

প্রতি:

let bundle = Bundle(for: UserView.self) 
bundle.loadNibNamed("UserView", owner: self, options: nil)

8

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


7

আমার সমস্যা উত্পন্ন ডেটা ফোল্ডার থেকে ফোল্ডারগুলি (যা এই প্রকল্পের সাথে সম্পর্কিত) মুছে ফেলার মাধ্যমে সমাধান করা হয়েছিল। আপনি ফাইল -> প্রকল্প সেটিং -> এ ক্লিক করে এটি করতে পারেন তারপরে অ্যারো চিহ্ন ডাইসাইড / ইউজারস..... / এক্সকোড / ডেরিভেডডাটা ডেরিভেডডাটা ফোল্ডারে ক্লিক করুন আপনি দেখতে পাবেন যে আপনার প্রকল্পের নামক ফোল্ডারগুলি সেগুলি মুছে ফেলবে। আপনার প্রকল্পটি খুলুন এক্সকোড ছাড়ুন, এই পদক্ষেপটি ব্যবহার করে প্রকল্পটি পরিষ্কার করুন পণ্য-> পরিষ্কার করুন তারপর প্রকল্পটি তৈরি করুন: পণ্য-> বিল্ড এগুলি এই সমস্যার সমাধান করবে।


4

@ মারিয়া সরবরাহ করেছেন সঠিক উত্তর :

ক্রাশ রিপোর্ট পরীক্ষা করুন ~/Library/Logs/DiagnosticReports

বিকল্প উপায় :

  1. খোলা Spotlight

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

  1. আদর্শ console.app

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

  1. নির্বাচন করা Crash reports

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

  1. IBDesignablesAgent-iOSক্র্যাশ লগের জন্য একটি পরীক্ষা করুন এবং পর্যালোচনা করুন

কনসোল ব্যবহার করা আমাকে সমস্যা সমাধান করতে সহায়তা করেছিল। এক্সকোডে যা ছিল তার চেয়ে অনেক বেশি বিস্তারিত বার্তা।
অ্যান্ড্রু মুর


3

আমি পরিষ্কার চেষ্টা করেছি এবং প্রজেক্টটি চালানোর ফলে এই সমস্যাটি সমাধান হবে না।

কিন্তু ক্লোজ এবং পুনর্নির্মাণ প্রকল্পটি করেছে।


2

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

সমাধান 1: - আপনার পড ফাইলে অভ্যন্তরীণ মন্তব্য # ব্যবহার_ফ্রেমওয়ার্ক।

সমাধান 2: - উদ্ভূত ডেটা মুছতে চেষ্টা করুন

  1. আপনার এক্সকোডের সম্পাদক উইন্ডোটি বন্ধ করুন এবং সিমুলেটরটি প্রস্থান করুন ->
  2. এক্সকোড পছন্দসমূহ -> অবস্থান -> এ যান
  3. উদ্ভূত ডেটা পথ -> দেখায় ছোট ধূসর তীর ক্লিক করুন
  4. আপনার প্রকল্প নির্বাচন করুন ->
  5. ভিতরে সমস্ত ফোল্ডার মুছুন ->
  6. এক্সকোড ছেড়ে প্রস্থান করুন

1
এটি কীভাবে এটি সমস্যার সমাধান করে তা বিশদভাবে বলতে পারেন?
পলা হাসেন্তেফেল

এটি সমস্যার সমাধান করেছে তবে এখনও কেন তা জানা নেই যে এই ব্যবহার_ফ্রেমে ওয়ার্কস কেননা সুইফ্ট প্রকল্পের জন্য সঠিক
অভিষেক

আমার পডফিল ইতিমধ্যে ফ্রেমওয়ার্ক ব্যবহার করছে, অতীতের কোনও পরামর্শ যে অস্বস্তিকর?
mmr118

@ moni15 আমি আরও একটি সম্ভাব্য সমাধান যুক্ত করেছি। দয়া করে চেক করুন।
আশীষ পিসে

পড ফাইলে অবিস্মরণীয় # ব্যবহার_ফ্রেমার্কস এবং ডেরিভেডডাটা সাফ করা আমার পক্ষে কাজ করেছে।
যুগল দেশাই

2

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

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

@IBDesignable class RoundedView: UIView {

override init(frame: CGRect) {
    super.init(frame: frame)
    sharedInit()
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    sharedInit()
}

override func prepareForInterfaceBuilder() {
    super.prepareForInterfaceBuilder()
    sharedInit()
}

func sharedInit() {
}
}

গুরুত্বপূর্ণ: আপনি যে নকশার উপর নকশাযোগ্য ব্যবহার করছেন সেটিতে নতুন ক্লাস যুক্ত করতে ভুলবেন না।


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

1

একই ত্রুটির মুখোমুখি: ইউআইটিেক্সটফিল্ডটি কাস্টমাইজ করে এবং ইন্টারফেস বিল্ডার ব্যবহার করে, কনসোলে ত্রুটিটি ছিল - "কাস্টমফিল্ড" ক্লাসের জন্য অবিহিত আরম্ভকারী 'থ্রি (ফ্রেম :)' এর ব্যবহার U

ত্রুটিটি সংশোধন করার জন্য আরম্ভকারীকে যুক্ত করা হয়েছে


1

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


0

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


0

আমার ক্ষেত্রে, আমি একটি লাইব্রেরি ব্যবহার করছিলাম যা সাবক্লাসিং ছিল UIView। এটি ব্যবহার করছিল IB_DESIGNABLE, এবং এতে কল অনুপস্থিত ছিল [super awakeFromNib]। একবার আমি এই পদ্ধতিতে কল যুক্ত করলে বাগটি চলে যায়।

আমি নিশ্চিত নই যে এটি বাস্তবায়িত IB_DESIGNABLEহচ্ছিল তাতে এর প্রভাব ছিল কিনা ।


আপনি [সুপার জাগ্রতফ্রমনিব] এর জন্য কোডটি কোথায় যুক্ত করেছেন? আপনি কি আপনার কোড শেয়ার করতে পারেন?
দ্য জেফ

0

এটি আমার পক্ষে সহজতম উপায়: এই স্ক্রিপ্টটি আপনারটিতে যুক্ত করুন Podfile

Podfile:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    next if target.product_type == "com.apple.product-type.bundle"
    target.build_configurations.each do |config|
      config.build_settings['CONFIGURATION_BUILD_DIR'] = '$PODS_CONFIGURATION_BUILD_DIR'
    end
  end
end

উৎস:

@ আইবিডি ডিজাইনেবলের জন্য এই কার্যকারিতাটি এখানে পাওয়া যাবে: https://github.com/CocoaPods/ কোকোপডস / বিবিধ / ৫৩৪৪

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