ত্রুটি: CUICatolog: সরবরাহ করা অবৈধ সম্পদের নাম: (নাল), বা অবৈধ স্কেল ফ্যাক্টর: 2.000000


120
TableViewApplication[1458:70b] CUICatalog: Invalid asset name supplied: (null), or invalid scale factor: 2.000000

স্ক্রিনশট যুক্ত করা হয়েছে

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


আপনি কিছু কোড পোস্ট করতে পারেন?
প্যাট্রিক হফম্যান

2
চিত্রের নামটি খালি স্ট্রিং থাকলে
31

উত্তর:


242

যখন কেউ প্রবেশ করার চেষ্টা করছেন তখন এটি উপস্থিত nilহয়[UIImage imageNamed:]

এর জন্য প্রতীকী ব্রেকআপপয়েন্ট যুক্ত করুন [UIImage imageNamed:]প্রতীক ব্রেক ব্রেকপয়েন্ট উদাহরণ

যোগ $arg3 == nilসিমুলেটার, উপর শর্ত $r0 == nilউপর 32 বিট আইফোন শর্ত, অথবা $x2 == nil64-বিট আইফোনের।

আপনার অ্যাপ্লিকেশন চালান এবং দেখুন ডিবাগারটি কোথায় থামবে।

পিএস মনে রাখবেন এটি যদি চিত্রের নামটি খালি স্ট্রিং থাকে। আপনি [(NSString*)$x2 length] == 0শর্তটি যুক্ত করে এটি পরীক্ষা করতে পারেন ।


7
এটি একটি চতুর পদ্ধতির। দেখে মনে হচ্ছে আমার নীল চিত্রটি আমার কোথাও কোথাও রয়েছে, তাই এটি UIImage imageNamed:পেরে উঠছে না তবে আমি এই ব্রেকপয়েন্টটি সংরক্ষণ করছি।
cbowns

9
$arg3শর্তাধীন ব্রেকপয়েন্টের সিনট্যাক্স সম্পর্কে আমি জানতাম না । আমি কোথায় আরও শিখতে পারি?
জেভ আইজেনবার্গ

3
সবসময় ফিরে আসার কারণে কেন এটি আমার পক্ষে কাজ করে না তা বুঝতে নিশ্চিত হন না error: use of undeclared identifier '$arg3'। আমি কি কিছু রেখে গেলাম?
বেন

5
আমি পেতে থাকি: ব্রেকপয়েন্টের ২৩.১ শর্তের মূল্যায়ন করার সময় ত্রুটির কারণে বন্ধ হয়ে গেছে: "$ r0 == শূন্য" শর্তসাপেক্ষ প্রকাশটি পার্স করা যায়নি: ত্রুটি: অঘোষিত শনাক্তকারী '$ r0' ত্রুটি:
এক্সার

8
আমার ক্ষেত্রে চিত্রের নামের স্ট্রিংটি খালি ছিল, সুতরাং আরগ 3 দৈর্ঘ্য পরীক্ষা করা আমার পক্ষে কাজ করেছিল। (int)[$arg3 length] == 0
ম্যাথু করপোরাল

62

এই ত্রুটিটি (সাধারণত) ঘটে যখন আপনি কোনও চিত্র লোড করার চেষ্টা করেন [UIImage imageNamed:myImage]তবে আইওএস নিশ্চিত নয় যে myImageএটি সত্যই একটি কিনা NSStringএবং তারপরে আপনার এই সতর্কতা রয়েছে।

আপনি এটি ব্যবহার করে এটি ঠিক করতে পারেন:

[UIImage imageNamed:[NSString stringWithFormat:@"%@", myImage]]

অথবা আপনি কেবল lengthএর নামের জন্য যাচাই করতে পারেন UIImage:

if (myImage && [myImage length]) {

    [UIImage imageNamed:myImage];
}

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

@ ডেভজি আপনি স্যার, আমাকে কয়েক ঘন্টা বাঁচিয়েছেন। মন্তব্য করার জন্য আপনাকে ধন্যবাদ!
জেফ

22

যেহেতু ত্রুটিটি যে অভিযোগ করেছে যে আপনি যে নামটি দিয়েছেন (null), তাই সম্ভবত এটি কল করার কারণে ঘটে [UIImage imageNamed:nil]। বা আরও সুনির্দিষ্টভাবে বলা যায় যে কোনও ভেরিয়েবলটিতে পাস করা সেট করা হয়নি, সুতরাং এটি সমান nil। ব্যবহার করার সময় stringWithFormat:ত্রুটি থেকে মুক্তি পেতে পারে, আমি মনে করি এটির একটি ভাল সুযোগ আছে যা আসলে আপনি যা চান তা করছে না। আপনার সরবরাহ করা নামটি যদি একটি nilমান হয় তবে স্ট্রিংউইথ ফর্ম্যাট ব্যবহার করে এর ফলাফলটি আক্ষরিক অর্থে "(নাল)" নামক একটি চিত্রের সন্ধান করবে, যেন আপনি কল করছেন [UIImage imageNamed:@"(null)"]

এর মতো কিছু সম্ভবত একটি ভাল বিকল্প:

if (name) {
    UIImage *image = [UIImage imageNamed:name];
} else {
    // Do something else
}

এই কোডটি প্রথম স্থানে নীল মান দিয়ে কেন ডাকা হচ্ছে কেন তা নির্ধারণ করতে আপনি "অন্য কিছু করুন" লাইনে এক্সকোডে একটি ব্রেকপয়েন্ট স্থাপন করতে চাইতে পারেন।


1
আমি একই সমস্যা পেয়েছি এবং ত্রুটিটি ছিল যে চিত্রটির নাম রোবটস্পেসারের মত শূন্য ছিল।
ডাইগমেন

17

এক্সকোড .4.৪ এ স্টোরিবোর্ডের কোনও ট্যাব বার আইটেমটির জন্য "নির্বাচিত চিত্র" ব্যবহার করার সময় এটি বৈধ চিত্র হলেও এমনটি মনে হচ্ছে।

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

এটি আসলে নির্বাচিত রাষ্ট্রীয় চিত্রটি যাইহোক সেট করে নি বলে মনে হয় না, তাই এটি ব্যবহারকারীর সংজ্ঞায়িত রানটাইম বৈশিষ্ট্যগুলিতে সংজ্ঞায়িত করা উচিত এবং ট্যাব বার আইটেমের সलेक्ट করা ইমেজ বৈশিষ্ট্য থেকে সরানো দরকার needs

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


1
এটার জন্য ধন্যবাদ! এই ত্রুটি / সতর্কতা বার্তাগুলি আমাকে বাদাম চালাচ্ছিল! অ্যাপল কেন ট্যাব বার আইটেমটি "নির্বাচিত চিত্র" আইবি-এর পুলডাউন থেকে মুক্তি পাচ্ছে না বা এটিকে ঠিক করতে পারে তাই এটি ঠিক করতে পারে না তা আমি বুঝতে পারি না।
wcochran

4

আমার ক্ষেত্রে আমি [UII চিত্র চিত্রনাম: @ ""] পাশ করছিলাম যা আমাকে সতর্কতা দেখিয়েছে। আপনি ইমেজ নামযুক্ত সমস্ত রেখায় ব্রেকপয়েন্টগুলি যুক্ত করুন এবং যেখানে সতর্কতাটি পাবেন সেখানে লাইনটি ডিবাগ করুন।


আমিও ব্যবহার করছি [UIImage imageNamed:@""]। আপনি এটা কিভাবে ঠিক করলেন?
জুলফিকার

[এ বাটন সেট ইমেজ: নিল ফর স্টেট: ইউআইসিএন্ট্রোলস্টেট নরমাল]
হ্যানিম্যান

একটি ব্যবহার ছাড়াও ifপরীক্ষা হলে চিত্র নাম একটি খালি স্ট্রিং নয়, অথবা একটি ডিফল্ট "noImage" ইমেজ ব্যবহার করে, কিভাবে আপনি কোন চিত্র প্রদর্শন না যখন কোনো প্রযোজ্য নাম প্রযোজ্য এবং সম্পদের একটি "noImage" ইমেজ ধারণ করে না?
চলে

2

স্টোরিবোর্ডটি কয়েকটি ভাগে বিভক্ত হওয়ার পরে আমার সাথে এটি ঘটেছিল (আসল পরিবর্তনটি যখন আমি ছুটিতে ছিলাম, সুতরাং কীভাবে এটি করা হয়েছিল আমি ঠিক জানি না)।

স্টোরিবোর্ডগুলির এক্সএমএল পরিদর্শন করার পরে, আমি দেখতে পেলাম যে একটি চিত্র রেফারেন্স যা পূর্বে সম্পদ ক্যাটালগটিতে "নীচে বার" এর দিকে ইঙ্গিত করেছিল imageView:fFo-1g-jzs:image

XML ফাইলটির শেষে <resources>ট্যাগের নীচে <image name="imageView:fFo-1g-jzs:image">একটি বড় mutableDataব্লবযুক্ত ট্যাগটির নাম লেখা হয়েছিল ।

স্টোরিবোর্ডে চিত্রের রেফারেন্সটি পুনরায় সেট করার পরে এবং ব্লবটি সরিয়ে দেওয়ার পরে ত্রুটিটি চলে গেছে।


এটি আমার জন্য এটি সমাধান করেছে, কিছুক্ষণের জন্য এই সমস্যাটি খুঁজছিলেন, এটি আমাকে বাদাম চালিয়েছে। ব্রেকপয়েন্ট স্কচ আমার পক্ষে কাজ করেনি।
মোশে গটলিব

এখানে একই সমস্যা, তবে ব্রেকপয়েন্টটি আমাকে যে এক্সবিটি ছিল তা সন্ধান করতে সহায়তা করেছিল The চিত্রটির নাম আইবিতে অজানা চিত্র ছিল।
জোশ বার্নফিল্ড

1

আমি এই ত্রুটি সবে ঠিক করেছি। শুধু [UIImage imageNamed:(NSString*) imageName]ফাংশনটির ব্যবহার পরীক্ষা করুন । যদি imageNameহয় nil, তাহলে এরর দেখা দেয়।


1

আপনি কিছু অবৈধ চিত্রের নাম সরবরাহ করছেন, সুতরাং এটি স্থাপনের আগে আপনাকে যাচাই করতে হবে আপনার কোডটির জন্য বা পছন্দ মতো যে কোনও উপায়ে উপরের যে কোনও উপায়ে করতে পারেন

if (iconImageName && [iconImageName length])
{

    [UIImage imageNamed:iconImageName];
}
else
{
     iconImageName.hidden = YES;
}

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


0

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

আমি নীচের চেক দিয়ে সতর্কতা এড়ানো হয়েছে:

UIImageView *your_image_view;
NSString *imageName;
if(imageName && imageName.length){
 your_image_view.hidden = NO;
 your_image_view.image = [UIImage imageNamed:imageName];
}
else {
 your_image_view.hidden = YES;
}

0

আমি এই সতর্কতাটি পেয়েছি যখন আমি চিত্রের ব্যবহার লোড করি [[UIImage imageNamed:normalStr] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal], এর পরিবর্তে, আমি পরিবর্তন করি [UIImage imageNamed:normalStr], সতর্কতা চলে যায়।


0

একটি পদ্ধতির প্রতিস্থাপন ক্লাস পদ্ধতি সুইজলিং হয় [UIImage imageNamed:] আপনার নিজের প্রয়োগের সাথে , তারপরে আপনার প্রয়োগের ক্ষেত্রে চিত্রের নামটি পরীক্ষা করুন। নিম্নলিখিত দেখুন:

আইওএস-এ কোনও শ্রেণিবদ্ধ পদ্ধতি কীভাবে ঘুরবেন?

আমি এটি আমার ইউআইআইমেজ (ডিবাগ) বিভাগে প্রয়োগ করেছি:

+ (UIImage *)db_imageNamed:(NSString *)imageName {
    if ([imageName length] == 0) {
        NSLog(@"breakpoint here");
    }
    return [self db_imageNamed:imageName];  // not a recursive call here after swizzling
}

আপনি [UIImage imageNamed:inBundle:compatibleWithTraitCollection:]পাশাপাশি সুইজল করতে চান ।


-1

"ইমেজনাম" "নিল" নয় তা নিশ্চিত করতে আপনি এটি ব্যবহার করতে পারেন; তারপরে আপনি এই সতর্কতাটি ত্যাগ করবেন।

 if (imageName) {
    self.imageView.image = [UIImage imageNamed:imageName];
 }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.