it-swarm.com.ru

"Использование неразрешенного идентификатора" в 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

Я получаю ошибку: 

использование неразрешенного идентификатора «SignIn»

75
Apple Geek

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

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

Targets

228
lchamp

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

3
Honey

«Использование неразрешенного идентификатора» в Swift также происходит, когда вы забыли импортировать библиотеку. Например, у меня есть ошибка:  enter image description here

В котором я забыл UIKit

импорт UIKit

2
Cons Bulaquena

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

  1. Проверьте, есть ли импорт в файле Bridging-Header.h
  2. Измените Целевое членство для Framework в файле Mantle.h, как показано на снимке экрана ниже.

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

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

 enter image description here

1
Vinod Supnekar

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

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

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

1
snakeoil

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

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

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

1
Fil0tti

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

1
M Johnson

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

Хороший совет - загляните в левую панель Issue Navigator; корневой объект покажет цель, которая выдает жалобу.

0
capikaw

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

F.e 

A.Swift

class A {

   class ARelated {

   }
}

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

Вы также можете:

1) разделите классы, если хотите, на один файл:

A.Swift

class A {

}

class ARelated {

}

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

var b = A.ARelated

0
htafoya

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

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

0
abhimanyu jindal