J'ai donc créé une application et tout fonctionnait très bien. Mais aujourd'hui, j'ai créé une nouvelle classe comme d'habitude et pour une raison quelconque dans cette classe, je ne peux pas accéder à la variable Public / Global à partir d'autres classes. Toutes les autres classes le peuvent, mais maintenant, chaque fois que j'essaye de créer une nouvelle classe, je ne peux pas. Comment cela serait-il réglé?
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
J'obtiens l'erreur:
utilisation de l'identifiant non résolu "signedIn"
}
à la fin de votreviewDidLoad()
Réponses:
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 tandis que l'autre n'en a pas. Pour ce cas précis, vous devez inclure toutes vos classes dans la cible de test ou aucune d'entre elles.
la source
«L'utilisation d'un identifiant non résolu» dans Swift peut également se produire lorsque vous avez oublié d'importer une bibliothèque. Par exemple, j'ai l'erreur:
Dans lequel j'ai oublié le
UIKit
la source
Une fois, j'ai eu ce problème après avoir renommé un fichier. J'ai renommé le fichier à partir de Xcode, mais par la suite Xcode n'a pas pu trouver la fonction dans le fichier. Même une reconstruction propre n'a pas résolu le problème, mais la fermeture puis la réouverture du projet ont permis à la construction de fonctionner.
la source
Parfois, le compilateur est confus au sujet de la syntaxe de votre classe. Cela arrive souvent si vous collez les sources depuis un autre endroit.
Essayez de réduire le fichier source «non résolu» au strict minimum, en nettoyant et en construisant. Une fois qu'il a été construit avec succès, ajoutez toute la complexité à votre classe.
Cela m'a fait disparaître lorsque le redémarrage de Xcode ne fonctionnait pas.
la source
Un autre endroit où j'ai vu cette erreur est lorsque votre projet a plusieurs cibles ET plusieurs 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 Navigateur de problèmes; l'objet racine affichera la cible qui émet la plainte.
la source
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 la faire réparer était de faire sortir la fonction dans une portée où elle était visible.
la source
Dans mon cas, j'avais un fichier Object-C qui était également dans la même adhésion cible. J'ai corrigé en ajoutant un
#import "YourObjectCFileHeader.h"
fichier à l'intérieurBridging-Header.h
la source
Parce que vous ne l'avez pas déclaré. Si vous souhaitez utiliser une variable d'une autre classe, vous devez utiliser
Vous devez mettre ce code à la fin du code NewClass
la source
Votre
NewClass
hérite deUIViewController
. Vous avez déclarésignedIn
dansViewController
. Si vous voulezNewClass
pouvoir identifier cette variable, elle devra être déclarée dans une classe dont vousNewClass
héritez.la source
J'ai eu cette erreur pour Mantle Framework dans mon projet Objective-Swift. Ce que j'ai essayé c'est,
Basculer entre l'appartenance privée, commencez par créer le projet, vous obtenez des erreurs. Ensuite, construisez le projet avec l'appartenance publique pour tous les frameworks apparus pour le fichier Mantle.h , vous devez réussir.
C'est juste un bug de construction avec plusieurs frameworks dans le projet Objective-C Swift.
la source
S'il s'agit d'une classe que vous avez créée, assurez-vous que la classe n'est pas imbriquée.
Fe
A.swift
l'appel
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
2) Conservez votre même structure et utilisez la classe englobante pour accéder à la sous-classe:
var b = A.ARelated
la source
J'ai fait une erreur stupide. J'ai oublié de mentionner la classe comme publique ou ouverte lors de la mise à jour du code dans l'espace de travail cocoapod.
Veuillez vérifier si l'accesseur fonctionne dans un espace de travail séparé.
la source
Vous avez oublié de déclarer la variable. Juste mettre
var
devantsignedIn = false
la source
viewDidLoad
.Mon problème était d'appeler mon programme avec le même nom que l'un de ses cocoapodes. Cela a provoqué un conflit. Solution: créez un nom de programme différent.
la source
Cela ne concerne pas directement votre exemple de code, mais en général l'erreur. Je l'écris ici, car Google dirige cette erreur vers cette question, elle peut donc être utile pour les autres développeurs.
Un autre cas d'utilisation où vous pouvez recevoir une telle erreur est lorsque vous ajoutez un sélecteur à une méthode dans une autre classe, par exemple:
Et puis dans une autre classe:
Si dans la dernière ligne vous appeliez simplement
#selector(cancelActionHandler)
au lieu de#selector(MockTextFieldTarget.cancelActionHandler)
, vous obtiendrezErreur.
la source