xcode - स्विफ्ट में "अविकसित प्रकार का उपयोग", भले ही प्रकार आंतरिक है, और उसी मॉड्यूल में मौजूद है




swift (15)

अगर किसी को भी ऐसी ही समस्या का सामना करना पड़ता है लेकिन संकलन स्रोत फिक्स समस्या को हल नहीं करता है, तो एक्सकोड को पुनरारंभ करना (यह मेरे लिए काम करता है)। Version 6.1 (6A1052d) का मेरा संस्करण Version 6.1 (6A1052d)

मेरे पास मेरे मॉड्यूल में एक प्रकार है:

import Cocoa

class ColoredDotView : NSView {
   ...
}

इसका उपयोग किसी भी मुद्दे के साथ कई अलग-अलग वर्गों में किया जाता है:

class EditSubjectPopoverController : NSObject {

    @IBOutlet internal var subjectColorDotView : ColoredDotView!
    ...
}

लेकिन किसी कारण से , जब मैं इसे एक विशिष्ट वर्ग में उपयोग करता हूं, तो मेरे पास इस प्रकार संकलन त्रुटियां होती हैं:

class EditTaskPopoverController : NSObject {

    @IBOutlet internal var lowPriorityDotView : ColoredDotView! // Error here
    @IBOutlet internal var medPriorityDotView : ColoredDotView! // And here...
    @IBOutlet internal var highPriorityDotView : ColoredDotView! // And here...
    ...
}

संकलन त्रुटि है:

EditTaskPopoverController.swift: 15: 49: अविकसित प्रकार 'रंगीन डॉट व्यू' का उपयोग

जो मुझे समझ में नहीं आता है। यह फ़ाइल में पहली संकलन त्रुटि है, और बाकी त्रुटियां पहले के सभी लक्षण हैं। इसके अलावा, संकलन त्रुटियों के साथ कोई अन्य फाइलें नहीं हैं। मुझे समझ में नहीं आता कि प्रकार क्यों अव्यवस्थित है, क्योंकि फ़ाइल एक ही मॉड्यूल में है:

मैंने प्रोजेक्ट की सफाई करने, बिल्ड फ़ोल्डर की सफाई करने और एक्सकोड को पुनरारंभ करने की कोशिश की है, इसका कोई फायदा नहीं हुआ है। क्या संभावित गलत तरीके स्विफ्ट में एक undeclared type संकलक त्रुटि का कारण बन सकता है?


इसका पहले से ही @ क्रैग ओटिस द्वारा उत्तर दिया गया है, लेकिन समस्या तब होती है जब प्रश्न में कक्षाएं एक ही लक्ष्य से संबंधित नहीं होती हैं, आमतौर पर परीक्षण लक्ष्य गुम है। बस सुनिश्चित करें कि निम्नलिखित चेक बॉक्स चुने गए हैं।

संपादित करें

लक्ष्य सदस्यता देखने के लिए। अपनी फ़ाइल का चयन करें, फिर फ़ाइल निरीक्षक (⌥ + ⌘ + 1) [ विकल्प ] + [ कमांड ] + 1 खोलें


एप्लिकेशन से संबंधित स्विफ्ट कोड का परीक्षण करते समय, पहले सुनिश्चित करें कि परीक्षण लक्ष्य निर्भरता के रूप में एप्लिकेशन का निर्माण कर रहा है। फिर, अपने परीक्षण में, एप्लिकेशन को मॉड्यूल के रूप में आयात करें। उदाहरण के लिए:

@testable import MyApplication

इससे स्विफ्ट ऑब्जेक्ट्स बन जाएंगी जो परीक्षण के लिए उपलब्ध एप्लिकेशन का हिस्सा हैं।


जैसा कि दूसरों ने अच्छी तरह से और इस धागे में उल्लेख किया है

"प्रतिलिपि बंडल संसाधनों" में अनइडेड स्विफ्ट फ़ाइलों का उपयोग


पुhew ने आखिरकार इसका निदान किया। किसी भी तरह , अपमानजनक स्विफ्ट फ़ाइल EditTaskPopoverController.swift दो अलग-अलग निर्माण चरणों में थी।

यह सभी अन्य स्विफ्ट फाइलों के साथ, Compile Sources ठीक से था, लेकिन यह कुछ बहुत ही अजीब कारणों से, Copy Bundle Resources चरण में भी मेरे सभी एक्सआईबी और छवि संसाधनों के साथ था।

मुझे नहीं पता कि यह कैसे मिला, लेकिन अतिरिक्त निर्माण चरण से इसे हटाने से इस मुद्दे को हल किया गया।


मुझे इस त्रुटि संदेश को एक्सकोड 8 में मिला है जबकि कोड को फ्रेमवर्क में रीफैक्टर कर रहा है, यह पता चला है कि मैं कक्षा के रूप में ढांचे में कक्षा घोषित करना भूल गया


मेरे ऐप में मेरे पास ऐप प्रतिनिधि और अन्य वर्ग हैं जिन्हें सार्वजनिक रूप से परीक्षणों तक पहुंचाया जाना चाहिए। जैसा कि यहां बताया गया है , फिर मैं अपने परीक्षण में अपने ऐप को आयात करता हूं।

जब मैंने हाल ही में दो नए वर्ग बनाए, तो उनके परीक्षण लक्ष्य मुख्य और परीक्षण दोनों भाग थे। परीक्षण से उनकी सदस्यता से उन्हें हटाकर इस मुद्दे को हल किया गया।


मेरे मामले में मेरे द्वारा बनाई गई गलती थी। मैंने "आईओएस> स्रोत> कोको टच क्लास" की जगह "ओएस एक्स> सोर्स> कोको क्लास" के रूप में एक नई फाइल को जोड़ा।


मेरे मामले में, यह एक उप-वर्ग नाम के कारण एक अगली पंक्ति में एक भिन्न प्रकार के साथ परिवर्तनीय नाम के रूप में उपयोग किया जा रहा था:

var binGlow: pipGlow = pipGlow(style: "Bin")
var pipGlow: PipGlowSprite = PipGlowSprite()

ध्यान दें कि लाइन 1 में, pipGlow उपclass (SKShapeNode का) का नाम है, लेकिन लाइन दो में, मैं एक चर नाम के रूप में pipGlow का उपयोग कर रहा था। यह न केवल खराब कोडिंग शैली थी, बल्कि स्पष्ट रूप से एक बिल्कुल नहीं-नहीं! एक बार जब मैं दूसरी पंक्ति को बदल देता हूं:

var binGlow: pipGlow = pipGlow(style: "Bin")
var pipGlowSprite: PipGlowSprite = PipGlowSprite()

मुझे अब त्रुटि नहीं मिली है। मुझे उम्मीद है इससे किसी को सहायता मिलेगी!


मेरे मामले में, यह तेजी से फ़ाइलों के टेक्स्ट एन्कोडिंग के कारण हुआ था। एक फ़ाइल ने 'नो स्पष्टीकरण एन्कोडिंग' दिखाया, और इसे 'यूटीएफ -8' में बदलने के बाद, समस्या हल हो गई।

और फ़ाइल का टेक्स्ट एन्कोडिंग स्पष्ट क्यों नहीं है कि मैंने अन्य स्विफ्ट फ़ाइल से सभी कोड कॉपी किए हैं।

कोई स्पष्ट एन्कोडिंग स्क्रीनशॉट नहीं

यूटीएफ -8 स्क्रीनशॉट


मेरे लिए, मुझे इस त्रुटि का सामना करना पड़ा जब मेरे परीक्षण लक्ष्य में कुछ तेज़ फ़ाइलें नहीं थीं, जिनके ऐप का निर्माण लक्ष्य संकलित स्रोतों में था। यह बहुत भ्रमित था क्योंकि बिना किसी समस्या के कई अन्य स्थानों में 'अविकसित प्रकार' का उपयोग किया जा रहा था, और त्रुटि अस्पष्ट लग रही थी। इसलिए परीक्षण लक्ष्य में 'अविकसित प्रकार' वाली फ़ाइल को जोड़ने के लिए समाधान था।


मेरे साथ भी ठीक यही समस्या थी। मेरे ढांचे में कुछ फाइलें उसी मॉड्यूल के भीतर अन्य कक्षाओं से पहुंच योग्य नहीं थीं।

कुछ कारणों से एक्सकोड में ढांचे में जो फ़ाइलें शामिल की गई थीं वे संकलन स्रोतों का हिस्सा नहीं थीं। यदि आपकी स्विफ्ट फ़ाइल संकलन स्रोतों का हिस्सा नहीं है तो आपको उन्हें टैप करके और पॉपअप में चुनकर उन्हें जोड़ने की आवश्यकता है।

यह भी सुनिश्चित करें कि फ़ाइल ढांचे के लक्ष्य का हिस्सा है। (नीचे स्क्रीनशॉट में छोटा बॉक्स चेक किया जाना चाहिए)


यह किसी की मदद कर सकता है।

मैंने कोर डेटा के साथ "कोरडाटा" नामक नई टेस्ट प्रोजेक्ट बनाई है। संक्षेप में मुझे NSManagedObjectContext और अन्य कोर डेटा कक्षाओं के लिए "अविकसित प्रकार का उपयोग" मिला है। आयात करने के कई प्रयासों के बाद, बिल्ड चरणों में जोड़ना आदि। मैंने प्रोजेक्ट हटा दिया है और "टेस्टिंगिंग कोरडाटा" नामक नया शुरू किया है और यह सब ठीक से काम करता है।

कक्षाओं के नाम की तरह परियोजनाओं (परीक्षण) परियोजनाओं का नाम न दें


यह तब भी हो सकता है जब आप दुर्घटना से पैरामीटर नाम को कैपिटल करते हैं, और इसे ऑब्जेक्ट के समान कहते हैं।

class func didRecieveData(BlockItems: [BlockItems])

हो सकता है कि आपने कुछ "फर्स्टनाम क्लास" के साथ कक्षा को जोड़ा हो और उसके बाद मैन्युअल रूप से "रंगीन डॉटव्यू" का नाम बदलें। क्लिपबोर्ड पर "रंगीन डॉटव्यू" कक्षा की सामग्री की प्रतिलिपि बनाने का प्रयास करें, प्रोजेक्ट से "रंगीन डॉटव्यू" हटाएं और एगिन जोड़ें।

यह आईडी मुझसे समान समस्या ठीक करती है।