"Использование неразрешенного идентификатора" в Swift

Итак, я делаю приложение, и все работает отлично. Но сегодня я создал новый класс, как обычно, и почему-то в этом классе я не могу получить доступ к переменной Public/Global из других классов. Все остальные классы могут, но теперь, когда я пытаюсь создать новый класс, я не могу. Как это будет исправлено?

Я использую Swift и Xcode 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

Я получаю use of unresolved identifier signedIn

Ответ 1

Одна из возможных проблем заключается в том, что ваш новый класс имеет другой Target или разные целевые объекты от другого.

Например, у него может быть цель тестирования, а другая - нет. Для этого конкретного случая вы должны включить все ваши классы в целевую аудиторию или ни один из них.

Targets

Ответ 2

Для меня эта ошибка произошла, потому что я пытался вызвать вложенную функцию. Единственное, что я должен был сделать, чтобы зафиксировать это, - это вывести функцию в область видимости.

Ответ 3

Потому что вы этого не объявили. Если вы хотите использовать переменную другого класса, вы должны использовать

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

Вы должны поместить этот код в конец кода NewClass

Ответ 4

Иногда компилятор запутывается в синтаксисе вашего класса. Это происходит очень часто, если вы вставляете источник из другого места.

Попробуйте уменьшить "неразрешенный" исходный файл до минимального минимума, очистки и сборки. Как только он будет успешно создан, добавьте всю сложность в свой класс.

Это заставило меня уйти, когда перезапуск Xcode не работал.

Ответ 5

Ваш NewClass наследует от UIViewController. Вы объявили signedIn в ViewController. Если вы хотите, чтобы NewClass мог идентифицировать эту переменную, он должен быть объявлен в классе, на который наследуется ваш NewClass.

Ответ 6

Другое место, где я видел эту ошибку, - это когда у вашего проекта несколько целей и несколько заголовков мостов. Если это общий класс, убедитесь, что вы добавили ресурс во все заголовки мостов.

Хорошим советом является просмотр левой панели "Навигатор проблемы"; в корневом объекте будет отображаться цель, выдающая жалобу.

Ответ 7

Если это касается созданного вами класса, убедитесь, что класс не вложен.

F.e

A.swift

class A {

   class ARelated {

   }
}

вызов var b = ARelated() даст "Использование неразрешенного идентификатора: ARelated".

Вы можете:

1) разделяйте классы, если они нужны в одном файле:

A.swift

class A {

}

class ARelated {

}

2) Поддерживайте свою структуру и используйте класс-оболочку, чтобы перейти в подкласс:

var b = A.ARelated

Ответ 8

Я сделал глупую ошибку. Я забыл упомянуть класс как открытый или открытый при обновлении кода в рабочем пространстве cocoapod.

Пожалуйста, проверьте, работает ли accesor в отдельной рабочей области.

Ответ 9

Я получил эту ошибку для Mantle Framework в моем проекте Objective-Swift. Что я пробовал,

  • Проверьте, есть ли импорт в файле Bridging-Header.h
  • Измените целевое членство для платформы в файле Mantle.h, как показано ниже.

Переключение между частным членством сначала создает проект, заканчивается ошибками. Затем создайте проект с Public Membership для всех фреймворков, появившихся для файла Mantle.h, вы должны добиться успеха.

Это просто ошибка сборки с несколькими фреймами в проекте Objective-C Swift.

введите описание изображения здесь