स्विफ्ट में अनारक्षित पहचानकर्ता का उपयोग ’


93

इसलिए मैं एक ऐप बना रहा हूं, और सब कुछ बढ़िया काम कर रहा है। लेकिन आज मैंने हमेशा की तरह एक नया वर्ग बनाया और इस वर्ग में किसी कारण से मैं अन्य वर्गों से सार्वजनिक / वैश्विक चर का उपयोग नहीं कर सका। अन्य सभी वर्ग कर सकते हैं, लेकिन अब जब भी मैं एक नई कक्षा बनाने की कोशिश करता हूँ तो मैं नहीं कर सकता। यह कैसे तय होगा?

मैं स्विफ्ट और एक्सकोड 6 का उपयोग कर रहा हूं।

श्रमिक वर्ग:

import UIKit
import Foundation
import Parse
import CoreData

var signedIn = true

class ViewController: UIViewController {

नई कक्षा:

import UIKit

class NewClass: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        signedIn = false

}

लेकिन पर signedIn = false

मुझे त्रुटि मिली:

अनसुलझे पहचानकर्ता का उपयोग "हस्ताक्षरित"


और हाँ मैंने इस क्लास को कई बार डिलीट और रिक्रिएट किया है
Apple Geek

कृपया अपना कोड दिखाएं, दोनों काम कर रहे हैं और काम नहीं कर रहे हैं।
Wez

क्या आप XCode / Swift का संस्करण निर्दिष्ट कर सकते हैं जो आप उपयोग कर रहे हैं (यदि यह बीटा है या नहीं)?
लछमप

@ आईचैम्प Xcode 6.1 बीटा नहीं।
Apple Geek

1
क्या यह आपका पूरा कोड है? अपने इंडेंटेशन की वजह से ऐसा लग रहा है कि आप }अपने अंत में एक घुंघराले ब्रैकेट को याद कर रहे हैंviewDidLoad()
Wez

जवाबों:


296

एक संभावित मुद्दा यह है कि आपके नए वर्ग का लक्ष्य अलग है या दूसरे से अलग लक्ष्य।

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

लक्ष्य


यदि कक्षा एक अलग लक्ष्य में है, तो सुनिश्चित करें कि आप इसे अपनी स्विफ्ट फ़ाइल के ऊपर आयात करें
Medhi

2
हे, वह एक समस्या थी। मैं कक्षा के लिए लक्ष्य निर्धारित करना भूल गया। Tnx :)
tBug

ओह यार, मैंने इसे हल करने के लिए कुछ घंटे बिताए। ऐसा बेवकूफ त्रुटि संदेश। यहां तक ​​कि सिंटैक्स त्रुटि बेहतर है!
turingtested

हाँ .. यह एक परीक्षण परियोजना के लिए एक लक्ष्य में सेट नहीं किया गया था !! धन्यवाद आप
reidisaki

1
मेरा अंदर था, लेकिन मैंने अभी अनियंत्रित किया, फिर से जाँच की, जिसने यह तय किया और मेरा स्वत: पूर्ण / अंतर्मुखी वापस आ गया!
स्टीफन जे

7

स्विफ्ट में 'अनट्रेसल्ड आइडेंटिफ़ायर का उपयोग' मेरा भी तब होता है जब आप लाइब्रेरी आयात करना भूल जाते हैं। उदाहरण के लिए मेरे पास त्रुटि है: यहां छवि विवरण दर्ज करें

जिसमें मैं भूल गया UIKit

आयात UIKit


1
आयात
AVFoundation

5

एक बार एक फ़ाइल का नाम बदलने के बाद मुझे यह समस्या हुई। मैंने फ़ाइल को Xcode के भीतर से नया नाम दिया, लेकिन बाद में Xcode फ़ाइल में फ़ंक्शन नहीं ढूंढ सका। यहां तक ​​कि एक साफ पुनर्निर्माण ने समस्या को ठीक नहीं किया, लेकिन परियोजना को फिर से खोलना और फिर से खोलना काम करने के लिए निर्माण हुआ।


यह एक फ़ाइल के स्थान को बदलने के लिए भी काम करता है
लोगान जॉर्ज

बिल्कुल सही मैंने फ़ाइलों के संदर्भ हटा दिए और फिर उन्हें फिर से जोड़ा। और सब कुछ काम किया
नोवा

4

कभी-कभी कंपाइलर आपकी कक्षा में वाक्य रचना के बारे में भ्रमित हो जाता है। यह बहुत कुछ होता है यदि आप कहीं और से स्रोत में पेस्ट करते हैं।

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

यह मेरे लिए दूर चला गया है जब Xcode फिर से शुरू नहीं हुआ।


4

एक और जगह मैंने यह त्रुटि देखी है जब आपकी परियोजना में कई लक्ष्य और कई ब्रिजिंग हेडर हैं । यदि यह एक साझा वर्ग है, तो सुनिश्चित करें कि आप संसाधन को सभी ब्रिजिंग हेडर में जोड़ें।

बाएं इश्यू नेविगेटर पैनल में देखने के लिए एक अच्छी टिप है; रूट ऑब्जेक्ट शिकायत को जारी करने वाले लक्ष्य को दिखाएगा।


3

मेरे लिए यह त्रुटि इसलिए हुई क्योंकि मैं एक नेस्टेड फ़ंक्शन को कॉल करने का प्रयास कर रहा था । केवल एक चीज मैं इसे ठीक किया गया है करने के लिए करना पड़ा समारोह लाने गया था बाहर एक गुंजाइश है जहां यह दिखाई दे रही थी करने के लिए।


"फ़ंक्शन को उस दायरे में लाएं जहां यह दिखाई दे रहा था", क्या आप इसे सार्वजनिक रूप से चिह्नित करते हैं?
बैरी जोन्स

नहीं, बस विशुद्ध रूप से चल रहा है / कार्य को एक अलग दायरे में खींच रहा है अर्थात कक्षा के दायरे में
हनी

3

मेरे मामले में, मेरे पास एक ऑब्जेक्ट-सी फ़ाइल थी जो उसी लक्ष्य सदस्यता में भी थी। मैंने #import "YourObjectCFileHeader.h"अंदर फ़ाइल जोड़कर तय कियाBridging-Header.h


1

क्योंकि आपने इसे घोषित नहीं किया है। यदि आप किसी अन्य वर्ग के चर का उपयोग करना चाहते हैं, जिसका आपको उपयोग करना चाहिए

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    var DestViewController : ViewController = segue.destinationViewController as ViewController
    DestViewController.signedIn = false
}

आपको इस कोड को न्यूक्लास कोड के अंत में रखना होगा


हां, लेकिन मैंने अन्य वर्गों का उपयोग किया है और उन्होंने इसके बिना ठीक काम किया है, यह सिर्फ तब है जब मैं यह नया वर्ग बनाऊंगा।
Apple Geek

2
यह काम नहीं करेगा, उसके पास साइन इन किया हुआ वैरिएबल है जो वैश्विक दायरे में घोषित किया गया है, अपनी कक्षा के अंदर नहीं।
सैम

1

आपकी NewClassविरासत से UIViewController। आपने में घोषित signedInकिया ViewController। यदि आप NewClassउस वैरिएबल को पहचानने में सक्षम होना चाहते हैं, तो उसे उस वर्ग में घोषित करना होगा जो आपकी NewClassविरासत से है।


1

मुझे अपने ऑब्जेक्टिव-स्विफ्ट प्रोजेक्ट में मेंटल फ्रेमवर्क के लिए यह त्रुटि मिली। मैंने जो कोशिश की वह है,

  1. जाँचें कि क्या आयात ब्रिजिंग-हैडर.ह फ़ाइल में है
  2. नीचे दिए गए स्क्रीनशॉट में दिखाए अनुसार मेंटल में फ्रेमवर्क के लिए लक्ष्य सदस्यता को बदलें ।

निजी सदस्यता के बीच टॉगल पहले परियोजना का निर्माण, त्रुटियों के साथ अंत। फिर मेंटल के लिए दिखाई गई सभी रूपरेखाओं के लिए पब्लिक मेंबरशिप के साथ प्रोजेक्ट का निर्माण करें फ़ाइल के लिए, आपको सफलता मिलनी चाहिए।

यह उद्देश्य-सी स्विफ्ट परियोजना में कई ढांचे के साथ इमारत का एक बग है।

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


0

यदि यह आपके द्वारा बनाई गई कक्षा के बारे में है, तो सुनिश्चित करें कि वर्ग नेस्टेड नहीं है।

फे

A.swift

class A {

   class ARelated {

   }
}

बुला var b = ARelated() 'अनसुलझे पहचानकर्ता का उपयोग: ARelated' देगा।

आप या तो यह कर सकते हैं:

1) यदि एक ही फाइल पर चाहते हैं तो कक्षाएं अलग करें:

A.swift

class A {

}

class ARelated {

}

2) अपने समान संरचना को बनाए रखें और उपवर्ग में जाने के लिए संलग्न वर्ग का उपयोग करें:

var b = A.ARelated


0

मैंने बेवकूफाना गलती की। मैं कोकोपोड कार्यक्षेत्र में कोड को अपडेट करते समय सार्वजनिक रूप से या खुले में उल्लेख करना भूल गया।

कृपया जाँचें कि क्या कार्यक्षेत्र अलग कार्यक्षेत्र में है या नहीं।


0

आप चर घोषित करना भूल गए। बस varसामने रख दियाsignedIn = false


मुझे लगता है कि यह पोस्ट कोड में सिर्फ एक टाइपो है (लापता समापन ब्रैकेट के साथ viewDidLoad
shim

0

मेरा मुद्दा मेरे प्रोग्राम को उसी के नाम से बुला रहा था जैसे कि उसके कोकोपॉड्स में से एक। इससे संघर्ष हुआ। समाधान: एक प्रोग्राम अलग नाम बनाएँ।


0

यह सीधे आपके कोड नमूने के लिए नहीं है, लेकिन सामान्य रूप से त्रुटि के बारे में है। मैं इसे यहां लिख रहा हूं, क्योंकि Google इस त्रुटि को इस प्रश्न पर निर्देशित करता है, इसलिए यह अन्य देवताओं के लिए उपयोगी हो सकता है।


जब आप इस तरह की त्रुटि प्राप्त कर सकते हैं तो एक अन्य उपयोग का मामला है, जब आप किसी अन्य वर्ग में विधि के लिए चयनकर्ता जोड़ रहे हैं, जैसे:

private class MockTextFieldTarget {
private(set) var didCallDoneAction = false
    @objc func doneActionHandler() {
        didCallDoneAction = true
    }
}

और फिर दूसरे वर्ग में:

final class UITextFieldTests: XCTestCase {
    func testDummyCode() {
        let mockTarget = MockTextFieldTarget()
        UIBarButtonItem(barButtonSystemItem: .cancel, target: mockTarget, action: MockTextFieldTarget.doneActionHandler)
        // ... do something ...
    }
}

यदि अंतिम पंक्ति में आप #selector(cancelActionHandler)इसके बजाय बस कॉल #selector(MockTextFieldTarget.cancelActionHandler)करेंगे, तो आपको मिलेगा

अनसुलझे पहचानकर्ता का उपयोग

त्रुटि।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.