web-dev-qa-db-fra.com

"Utilisation d'un identificateur non résolu" dans Swift

J'ai donc créé une application et tout fonctionne très bien. Mais aujourd'hui, j'ai créé une nouvelle classe comme d'habitude et pour une raison quelconque, je ne peux pas accéder aux variables Public/Global des autres classes. Toutes les autres classes le peuvent, mais maintenant, chaque fois que j'essaie de créer un nouveau cours, je ne le peux pas. Comment cela serait-il réparé?

J'utilise Swift et Xcode 6.

La classe ouvrière:

import UIKit
import Foundation
import Parse
import CoreData

var signedIn = true

class ViewController: UIViewController {

Nouvelle classe:

import UIKit

class NewClass: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        signedIn = false

}

Mais sur signedIn = false

Je reçois l'erreur: 

utilisation de l'identifiant non résolu "signedIn"

75
Apple Geek

Un problème possible est que votre nouvelle classe a une cible différente ou des cibles différentes de l’autre.

Par exemple, il peut avoir une cible de test alors que l’autre n’a pas. Pour ce cas spécifique, vous devez inclure toutes vos classes dans la cible de test ou aucune d'entre elles.

Targets

228
lchamp

Pour moi, cette erreur s’est produite parce que j’essayais d’appeler une fonction imbriquée . La seule chose que je devais faire pour le faire réparer consistait à amener la fonction out à un champ où elle était visible.

3
Honey

«L'utilisation d'un identificateur non résolu» dans Swift peut également se produire lorsque vous avez oublié d'importer une bibliothèque. Par exemple, j'ai l'erreur:  enter image description here

Dans lequel j'ai oublié la UIKit

importer UIKit

2
Cons Bulaquena

J'ai eu cette erreur pour Mantle Framework dans mon projet Objective-Swift . Ce que j'ai essayé, c'est

  1. Vérifiez si le fichier Bridging-Header.h est importé
  2. Modifiez l'appartenance à la cible pour la structure dans le fichier Mantle.h comme indiqué dans la capture d'écran ci-dessous.

Basculez entre les membres privés pour créer le projet, puis finissez avec des erreurs. Ensuite, construisez le projet avec une adhésion publique pour tous les cadres apparus dans le fichier Mantle.h, vous devez réussir.

C'est juste un bug de la construction avec plusieurs frameworks dans le projet Objective-C Swift.

 enter image description here

1
Vinod Supnekar

Parfois, le compilateur s'embrouille au sujet de la syntaxe de votre classe. Cela arrive souvent si vous collez une source ailleurs.

Essayez de réduire au minimum le fichier source "non résolu", nettoyage et création. Une fois qu'il est construit, ajoutez toute la complexité à votre classe.

Cela m'a fait disparaître lorsque le redémarrage de Xcode n'a pas fonctionné.

1
snakeoil

Parce que tu ne l'as pas déclaré. Si vous voulez utiliser une variable d'une autre classe, vous devez utiliser 

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

Vous devez mettre ce code à la fin du code NewClass

1
Fil0tti

Votre NewClass hérite de UIViewController. Vous avez déclaré signedIn dans ViewController. Si vous voulez que NewClass puisse identifier cette variable, elle devra être déclarée dans une classe dont votre NewClass hérite.

1
M Johnson

Un autre endroit où j'ai vu cette erreur est lorsque votre projet aplusieurs ciblesANDplusieurs en-têtes de pontage. S'il s'agit d'une classe partagée, assurez-vous d'ajouter la ressource à tous les en-têtes de pontage.

Un bon conseil est de regarder dans le panneau de gauche du navigateur; l'objet racine affichera la cible qui émet la plainte.

0
capikaw

S'il s'agit d'une classe que vous avez créée, assurez-vous qu'elle n'est pas imbriquée.

F.e 

A.Swift

class A {

   class ARelated {

   }
}

appeler var b = ARelated() donnera 'Utilisation de l'identifiant non résolu: ARelated'.

Tu peux soit:

1) séparez les classes si vous le souhaitez sur le même fichier:

A.Swift

class A {

}

class ARelated {

}

2) Conservez la même structure et utilisez la classe englobante pour accéder à la sous-classe:

var b = A.ARelated

0
htafoya

J'ai fait une erreur stupide. J'ai oublié de mentionner que la classe est publique ou ouverte lors de la mise à jour du code dans l'espace de travail cocoapod. 

S'il vous plaît vérifiez si l'accéseur si vous travaillez dans un espace de travail séparé.

0
abhimanyu jindal