সুইফটে 'অমীমাংসিত শনাক্তকারীর ব্যবহার'


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

আমি ত্রুটি পেয়েছি:

অমীমাংসিত সনাক্তকারী "স্বাক্ষরিত" ব্যবহার


এবং হ্যাঁ আমি এই ক্লাসটি বেশ কয়েকবার মুছে ফেলেছি এবং পুনরায় তৈরি করেছি
অ্যাপল গীক

দয়া করে আপনার কোডটি দেখান, কাজ করছেন এবং কাজ করছেন না।
ওয়েজ

আপনি যে এক্সকোড / সুইফট ব্যবহার করছেন সেটির সংস্করণ নির্দিষ্ট করতে পারেন (এটি যদি বিটা না হয়)?
lchamp

@ আইচ্যাম্প এক্সকোড .1.১ বিটা নয়।
অ্যাপল গীক

4
এটি কি আপনার সম্পূর্ণ কোড? আপনার ইন্ডেন্টেশনের কারণে দেখে মনে হচ্ছে আপনি }আপনারviewDidLoad()
ওয়েজ

উত্তর:


297

একটি সম্ভাব্য সমস্যা হ'ল আপনার নতুন শ্রেণীর অন্য একটির থেকে আলাদা লক্ষ্য বা ভিন্ন লক্ষ্যমাত্রা রয়েছে।

উদাহরণস্বরূপ, এটির পরীক্ষার লক্ষ্য থাকতে পারে যখন অন্যটি না করে। এই সুনির্দিষ্ট ক্ষেত্রে, আপনাকে পরীক্ষার লক্ষ্য বা আপনার কোনওটিই আপনার ক্লাসকে অন্তর্ভুক্ত করতে হবে।

লক্ষ্যমাত্রা


ক্লাসটি যদি অন্যরকম লক্ষ্যবস্তুতে থাকে তবে নিশ্চিত হয়ে নিন যে আপনি এটি আপনার সুইফট ফাইলের শীর্ষে আমদানি করেছেন
মেধী

4
হেই, সমস্যা ছিল। আমি ক্লাসের জন্য একটি লক্ষ্য সেটআপ করতে ভুলে গেছি। Tnx :)
tBug

ওহ মানুষ, আমি এটিকে সমাধান করতে কয়েক ঘন্টা ব্যয় করেছি। যেমন একটি নির্বোধ ত্রুটি বার্তা। এমনকি সিনট্যাক্স ত্রুটি আরও ভাল!
টিউরিংস্টেটেড

হ্যাঁ .. এটি একটি পরীক্ষার প্রকল্পের জন্য একটি লক্ষ্য সেট করা হয়নি !! আপনাকে ধন্যবাদ
রিডিসাকি

4
আমার মধ্যে ছিল, কিন্তু আমি কেবল চেক না করেই আবার যাচাই করেছি, যা এটি স্থির করেছে এবং আমার স্বতঃপূরণ / ইন্টেলিজেন্স ফিরে এসেছিল!
স্টিফেন জে

12

একবার ফাইলটির নাম পরিবর্তন করার পরে আমার এই সমস্যা হয়েছিল। আমি এক্সকোডের মধ্যে থেকে ফাইলটির নামকরণ করেছি, কিন্তু পরে এক্সকোড ফাইলটিতে ফাংশনটি খুঁজে পেল না। এমনকি একটি পরিষ্কার পুনর্নির্মাণ সমস্যাটি সমাধান করেনি, তবে বন্ধ করে এবং প্রকল্পটি পুনরায় খোলার ফলে কাজটি শুরু হয়ে যায়।


ঠিক ঠিক আমি ফাইলগুলি রেফারেন্সগুলি সরিয়েছি এবং সেগুলি আবার যুক্ত করেছি। এবং সবকিছু কাজ করেছে
হামেড নোভা

7

আপনি যখন কোনও লাইব্রেরি আমদানি করতে ভুলে গিয়েছিলেন তখন আমার সুইফটে 'অমীমাংসিত শনাক্তকারীর ব্যবহার'ও আমার ঘটে যায়। উদাহরণস্বরূপ আমার ত্রুটি রয়েছে: এখানে চিত্র বর্ণনা লিখুন

যা আমি ভুলে গেছি UIKit

ইউআইকিট আমদানি করুন



4

কখনও কখনও সংকলক আপনার ক্লাসের বাক্য গঠন সম্পর্কে বিভ্রান্ত হয়। আপনি অন্য কোথাও থেকে উত্স এ পেস্ট করলে এটি অনেক কিছু ঘটে।

"অমীমাংসিত" উত্স ফাইলটি কেবল ন্যূনতম, পরিষ্কার এবং বিল্ডিংয়ের মধ্যে হ্রাস করার চেষ্টা করুন। এটি সফলভাবে তৈরি হয়ে গেলে আপনার ক্লাসে সমস্ত জটিলতা আবার যোগ করুন।

এক্সকোডটি পুনরায় আরম্ভ করা যখন কাজ করে না তখন এটি আমার পক্ষে চলে যায়।


4

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

বাম ইস্যু নেভিগেটর প্যানেলে সন্ধান করার জন্য একটি ভাল পরামর্শ; রুট অবজেক্টটি লক্ষ্যটি প্রদর্শন করবে যা অভিযোগ জারি করছে।


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
}

আপনাকে এই কোডটি নিউক্লাস কোডের শেষে রাখতে হবে


হ্যাঁ তবে আমি অন্যান্য ক্লাস ব্যবহার করেছি এবং তারা এগুলি ব্যতীত দুর্দান্ত কাজ করেছে, আমি যখন নতুন ক্লাসটি তৈরি করি ঠিক তখনই।
অ্যাপল গীক

4
এটি কাজ করবে না, তার স্বাক্ষরযুক্ত বৈকল্পিক বিশ্বব্যাপী ঘোষিত আছে, তার শ্রেণীর ভিতরে নয়।
স্যাম

1

আপনার NewClassউত্তরাধিকার থেকে UIViewController। আপনি ঘোষণা signedInমধ্যে ViewController। আপনি যদি NewClassসেই পরিবর্তনশীল সনাক্ত করতে সক্ষম হতে চান তবে এটি আপনার NewClassবংশানুক্রমিক শ্রেণীর মধ্যে ঘোষণা করতে হবে ।


1

আমি আমার উদ্দেশ্য-সুইফট প্রকল্পে ম্যান্টল ফ্রেমওয়ার্কের জন্য এই ত্রুটিটি পেয়েছি। আমি যা চেষ্টা করেছি তা হ'ল

  1. ব্রিজিং-শিরোলেখ ফাইলটিতে আমদানি আছে কিনা তা পরীক্ষা করে দেখুন
  2. স্ক্রিনশটের নীচে যেমন দেখানো হয়েছে তেমনভাবে ম্যান্টল এইচ ফাইলের ফ্রেমওয়ার্কের জন্য টার্গেট সদস্যতাটি পরিবর্তন করুন ।

প্রাইভেট সদস্যতার মধ্যে টগল করুন প্রথমে প্রকল্পটি তৈরি করুন, ত্রুটিগুলি শেষ করুন। তারপরে Mantle.h এর জন্য উপস্থিত সমস্ত ফ্রেমওয়ার্কের জন্য সর্বজনীন সদস্যতার সাথে প্রকল্পটি তৈরি করুন ফাইলের করুন, আপনাকে অবশ্যই সাফল্য পেতে হবে।

এটি উদ্দেশ্য-সি সুইফট প্রকল্পের একাধিক কাঠামোযুক্ত বিল্ডিংয়ের একটি বাগ।

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


0

এটি যদি আপনি তৈরি করেছেন এমন কোনও শ্রেণীর বিষয়ে হয় তবে নিশ্চিত হন যে ক্লাসটি নেস্টেড নয়।

ফে

উঃ সুইফট

class A {

   class ARelated {

   }
}

কলিং var b = ARelated()'অমীমাংসিত শনাক্তকারীর ব্যবহার করুন: ARelated' দিতে হবে।

অপরপক্ষে তুমি:

1) একই ফাইলে চাইলে ক্লাসগুলি আলাদা করুন:

উঃ সুইফট

class A {

}

class ARelated {

}

২) আপনার একই কাঠামোটি বজায় রাখুন এবং সাবক্লাসে যাওয়ার জন্য ঘের ক্লাসটি ব্যবহার করুন:

var b = A.ARelated


0

আমি একটি বোকা ভুল করেছি। কোকোপড ওয়ার্কস্পেসে কোড আপডেট করার সময় আমি ক্লাসটিকে সর্বজনীন হিসাবে উল্লেখ করতে বা খুলতে ভুলে গেছি।

আলাদা ওয়ার্কস্পেসে কাজ করছেন কিনা অ্যাক্সেসর কিনা তা দয়া করে পরীক্ষা করে দেখুন।


0

আপনি ভেরিয়েবলটি ঘোষণা করতে ভুলে গেছেন। শুধু varসামনে রাখাsignedIn = false


আমি ধরে নেব যে পোস্ট কোডটিতে এটি কেবলমাত্র একটি টাইপো (নিখোঁজ বন্ধ বন্ধনীটি সহ viewDidLoad
শিম

0

আমার সমস্যাটি আমার প্রোগ্রামটিকে তার কোকোপডগুলির মতো একই নামে কল করছিল। এটি দ্বন্দ্ব সৃষ্টি করেছিল। সমাধান: একটি প্রোগ্রামের আলাদা নাম তৈরি করুন।


0

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


আপনি যখন অন্য শ্রেণীর কোনও পদ্ধতিতে কোনও নির্বাচককে যুক্ত করছেন তখন আপনি যখন এ জাতীয় ত্রুটিটি পেতে পারেন তখন অন্য ব্যবহারের ক্ষেত্রে যেমন:

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)করতে পারেন তবে আপনি পাবেন

অমীমাংসিত শনাক্তকারীর ব্যবহার

ত্রুটি.

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