"Использование неразрешенного идентификатора" в 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.
![введите описание изображения здесь]()