त्रुटि: CUICatalog: अमान्य परिसंपत्ति नाम की आपूर्ति: (अशक्त), या अमान्य पैमाने का कारक: 2.000000


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

स्क्रीनशॉट जोड़ा गया

TableViewController के साथ काम करते समय यह चेतावनी प्राप्त करना। इस त्रुटि को कैसे सुधारें और कौन सा ब्लॉक प्रभावित होता है?


क्या आप कुछ कोड पोस्ट कर सकते हैं?
पैट्रिक हॉफमैन

2
यह चेतावनी भी दिखाई देती है यदि छवि का नाम रिक्त स्ट्रिंग है
onmyway133

जवाबों:


242

यह तब दिखाई देता है जब कोई अंदर डालने की कोशिश कर रहा होता nilहै[UIImage imageNamed:]

के लिए प्रतीकात्मक विराम बिंदु जोड़ें [UIImage imageNamed:]प्रतीकात्मक ब्रेकपॉइंट उदाहरण

$arg3 == nilसिम्युलेटर पर शर्त जोड़ें , $r0 == nil32-बिट iPhone पर स्थिति, या $x2 == nil64-बिट iPhone पर।

अपना एप्लिकेशन चलाएं और देखें कि डिबगर कहां रुकेगा।

PS ध्यान रखें यह तब भी होता है जब छवि का नाम रिक्त स्ट्रिंग है। आप इसे [(NSString*)$x2 length] == 0शर्त में जोड़कर देख सकते हैं।


7
यह एक चतुर दृष्टिकोण है। ऐसा लग रहा है कि मेरी नील छवि मेरे निब में कहीं है, इसलिए यह नहीं चल रहा है UIImage imageNamed:, लेकिन मैं इस ब्रेकपॉइंट को फिर भी बचा रहा हूं।
cbowns

9
मैं $arg3सशर्त विराम बिंदुओं के लिए वाक्य रचना के बारे में नहीं जानता था । मैं और अधिक कहां से सीखूं?
ज़ेव ईसेनबर्ग

3
यह समझने के लिए निश्चित नहीं है कि यह मेरे लिए काम क्यों नहीं करता है, हमेशा लौटते हुए error: use of undeclared identifier '$arg3'। क्या मैं कुछ भुल गया?
बेन

5
मैं प्राप्त कर रहा हूं: ब्रेकपॉइंट की स्थिति का मूल्यांकन करने में त्रुटि के कारण रुकावट 23.1: "$ r0 == nil" सशर्त अभिव्यक्ति को पार्स नहीं कर सका: त्रुटि: अघोषित पहचानकर्ता '$ r0' त्रुटि का उपयोग: 1 त्रुटियों की अभिव्यक्ति की अभिव्यक्ति
प्रणॉय सी

8
मेरे मामले में छवि नाम स्ट्रिंग खाली था, इसलिए arg3 लंबाई की जाँच करना मेरे लिए काम कर गया। (int)[$arg3 length] == 0
मैथ्यू कोरपोराल

62

यह त्रुटि (आमतौर पर) तब होती है जब आप एक छवि को लोड करने की कोशिश करते हैं, [UIImage imageNamed:myImage]लेकिन iOS सुनिश्चित नहीं है कि क्या myImageवास्तव में है NSStringऔर फिर आपके पास यह चेतावनी है।

आप इसका उपयोग करके इसे ठीक कर सकते हैं:

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

या आप बस lengthके नाम के लिए जाँच कर सकते हैं UIImage:

if (myImage && [myImage length]) {

    [UIImage imageNamed:myImage];
}

1
यदि किसी ने भी वही गलती की जो मैंने किया, तो मैं एक UIButton की पृष्ठभूमि की छवि को हटाने की कोशिश कर रहा था (कोई भी छवि नहीं) और इसलिए मैंने अपना UIImage नाम स्ट्रिंग से बदलकर सिर्फ "" कर दिया, जो त्रुटि का कारण बना। पूरे UIImage (नाम: "") को हटाकर और इसे nil के साथ बदलने से, त्रुटि गायब हो गई।
डेव जी

@DaveG तुम साहब, मुझे घंटों बचाया। टिप्पणी के लिए धन्यवाद!
जेफ

22

चूंकि त्रुटि शिकायत कर रही है कि आपने जो नाम दिया है (null), यह कॉलिंग के कारण सबसे अधिक संभावना है [UIImage imageNamed:nil]। या अधिक विशेष रूप से, एक चर में गुजरना निर्धारित नहीं किया गया है, इसलिए यह बराबर है nil। उपयोग करते समय stringWithFormat:त्रुटि से छुटकारा मिल जाएगा, मुझे लगता है कि एक अच्छा मौका है यह वास्तव में वह नहीं है जो आप चाहते हैं। यदि आपके द्वारा आपूर्ति किया जाने वाला नाम एक nilमान है, तो stringWithFormat का उपयोग करें: इसका परिणाम उस छवि की तलाश में होगा जिसे सचमुच "null" नाम दिया गया है, जैसे कि आप कॉल कर रहे थे [UIImage imageNamed:@"(null)"]

इस तरह से कुछ शायद एक बेहतर विकल्प है:

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

आप Xcode पर एक ब्रेकपॉइंट सेट करना चाहते हैं जो "कुछ और करें" लाइन पर, आपको यह पता लगाने में मदद करेगा कि इस कोड को पहले स्थान पर शून्य मान के साथ क्यों बुलाया जा रहा है।


1
मुझे वही समस्या मिली और त्रुटि यह थी कि छवि का नाम शून्य था जैसे कि रोबोट स्पेसर का कहना है।
डाइगोमेन

17

Xcode 6.4 में, स्टोरीबोर्ड में टैब बार आइटम के लिए "चयनित छवि" का उपयोग करते समय ऐसा प्रतीत होता है, भले ही यह एक वैध छवि हो।

यहाँ छवि विवरण दर्ज करें

यह वास्तव में चयनित राज्य की छवि को वैसे भी सेट करने के लिए प्रतीत नहीं होता है, इसलिए इसे उपयोगकर्ता परिभाषित रनटाइम विशेषताओं में परिभाषित किया जाना चाहिए, और टैब बार आइटम की चयनित विशेषता से हटा दिया जाना चाहिए।

यहाँ छवि विवरण दर्ज करें


1
उसके लिये आपका धन्यवाद! ये त्रुटि / चेतावनी संदेश मुझे पागल कर रहे थे! मैं यह पता नहीं लगा सकता कि Apple आईबी में टैब बार आइटम "चयनित छवि" के पुलडाउन से छुटकारा क्यों नहीं पाता है या इसे ठीक करता है ताकि यह सही ढंग से काम करे।
wcochran

4

मेरे मामले में मैं [UIImage imageName: @ ""] पास कर रहा था, जिसके कारण मुझे चेतावनी दर्शानी पड़ी। बस उन सभी पंक्तियों में ब्रेकप्वाइंट जोड़ें जहां आपने छवि का उपयोग किया है और उस पंक्ति को डिबग करें जहां आपको चेतावनी मिलती है।


मैं भी उपयोग कर रहा हूं [UIImage imageNamed:@""]। आपने यह कैसे फिक्स किया?
जुल्फिकार

[aButton setImage: nil forState: UIControlStateNormal]
हैनिमैन

ifपरीक्षण का उपयोग करने के अलावा अगर छवि का नाम कोई रिक्त स्ट्रिंग नहीं है, या डिफ़ॉल्ट "noImage" छवि का उपयोग कर रहा है, तो आप कोई छवि नहीं दिखाते जब कोई लागू नाम लागू नहीं होता है और आस्तियों में "noImage" छवि नहीं होती है?
चला गया

2

स्टोरीबोर्ड के कई में विभाजित होने के बाद मेरे साथ ऐसा हुआ (वास्तविक परिवर्तन तब हुआ जब मैं छुट्टियों पर था, इसलिए मुझे नहीं पता कि यह कैसे किया गया था)।

स्टोरीबोर्ड्स के एक्सएमएल का निरीक्षण करने के बाद, मैंने पाया कि एक छवि संदर्भ जो पहले इंगित किया गया था कि संपत्ति सूची में "बॉटबर" को इंगित किया गया था imageView:fFo-1g-jzs:image

एक्सएमएल फ़ाइल के अंत में <resources>टैग के नीचे <image name="imageView:fFo-1g-jzs:image">एक बड़ा mutableDataब्लब युक्त टैग था ।

स्टोरीबोर्ड में छवि संदर्भ रीसेट करने और बूँद को हटाने के बाद, त्रुटि दूर हो गई।


इसने मेरे लिए इसे हल कर दिया, कुछ समय से इस समस्या की तलाश में था, इसने मुझे पागल कर दिया। ब्रेकपॉइंट स्किटिक ने मेरे लिए काम नहीं किया।
मोशे गोटलिब

यहाँ एक ही मुद्दा है, लेकिन ब्रेकपाइंट ने मुझे उस xib को खोजने में मदद की जो यह था। छवि का नाम अज्ञात छवि आईबी में था।
जोश बर्नफेल्ड मार्क

1

मैंने अभी इस त्रुटि को ठीक किया है। बस [UIImage imageNamed:(NSString*) imageName]फ़ंक्शन के उपयोग की जांच करें । यदि imageNameहै nil, तो त्रुटि उत्पन्न होती है।


1

आप कुछ अमान्य छवि नाम की आपूर्ति कर रहे हैं, इसलिए इसे डालने से पहले इसे सत्यापित करने की आवश्यकता है आप उपरोक्त तरीकों में से कोई भी कर सकते हैं जो भी आपके कोड या जैसे के लिए समझ में आता है

if (iconImageName && [iconImageName length])
{

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

आशा है कि यह मदद करेगा !!!!


0

त्रुटि का कारण "imageNamed:" विधि के लिए एक शून्य मान गुजर रहा है। इससे बचने के लिए, जब आप शून्य मान को पास करने का प्रयास करते हैं, तो आप अपनी छवि को छिपा सकते हैं। UITableView में imageViews के पुन: उपयोग में संभावना हो सकती है या स्क्रॉल दृश्य में हो सकती है।

मैंने नीचे दिए गए चेक से चेतावनी को टाल दिया:

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:]को अपने स्वयं के कार्यान्वयन के साथ बदलने के लिए स्विज़लिंग करें , फिर अपने कार्यान्वयन में छवि का नाम जांचें। निम्नलिखित देखें:

IOS पर क्लास विधि को कैसे स्वाइप करें?

मैंने इसे अपने UIImage (डीबग) श्रेणी में लागू किया:

+ (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

हो सकता है कि आप इसका उपयोग इस बात की पुष्टि करने के लिए कर सकते हैं कि "imageName" एक "शून्य" नहीं है; तब आप इस चेतावनी को छोड़ देंगे।

 if (imageName) {
    self.imageView.image = [UIImage imageNamed:imageName];
 }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.