首页 文章

在Swift中'Use of Unresolved Identifier'

提问于
浏览
71

所以我一直在制作应用程序,一切都很好 . 但今天我像往常一样创建了一个新类,由于某种原因,在本课程中,我无法从其他类访问Public / Global变量 . 所有其他课程都可以,但现在我尝试创建一个新课程时,我不能 . 这将如何解决?

我正在使用Swift和Xcode 6 .

Worker 阶级:

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

我收到错误:

使用未解析的标识符“signedIn”

11 回答

  • -1

    一个可能的问题是您的新类具有不同的目标或与另一个目标不同的目标 .

    例如,它可能有一个测试目标而另一个没有 . 对于这种特定情况,您必须在测试目标中包含所有类,或者不包括任何类 .

    Targets

  • 0

    对我来说,这个错误发生是因为我试图调用嵌套函数 . 我唯一需要做的就是将功能带到可见的范围 .

  • 0

    在Swift中'Use of Unresolved Identifier',当你忘记导入库时也会发生这种情况 . 例如,我有错误:
    enter image description here

    其中我忘记了 UIKit

    导入UIKit

  • 1

    因为你还没有声明它 . 如果要使用另一个类的变量,则必须使用

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

    您必须将此代码放在NewClass代码的末尾

  • 1

    有时编译器会对类中的语法感到困惑 . 如果您从其他位置粘贴源代码,则会发生这种情况 .

    尝试将“未解决的”源文件减少到最低限度,清理和构建 . 成功构建后,将所有复杂性添加回您的课程 .

    这使得它在重新启动Xcode时不起作用 .

  • 221

    您的 NewClass 继承自 UIViewController . 你在 ViewController 中声明了 signedIn . 如果希望 NewClass 能够识别该变量,则必须在 NewClass 继承的类中声明它 .

  • 0

    我见过这个错误的另一个地方是你的项目有 multiple targetsmultiple bridging headers . 如果它是共享类,请确保将资源添加到所有桥接标头 .

    一个很好的提示是查看左侧的“问题导航器”面板;根对象将显示发出投诉的目标 .

  • 3

    如果这是关于您创建的类,请确保该类不是嵌套的 .

    F.e

    A.swift

    class A {
    
       class ARelated {
    
       }
    }
    

    调用 var b = ARelated() 将给'Use of unresolved identifier: ARelated' .

    你可以:

    1)如果需要在同一个文件中分隔类:

    A.swift

    class A {
    
    }
    
    class ARelated {
    
    }
    

    2)保持相同的结构并使用封闭类来到子类:

    var b = A.ARelated

  • 0

    我犯了一个愚蠢的错误 . 我忘了在更新cocoapod工作区中的代码时将该类提及为public或open .

    如果在单独的工作区中工作,请检查是否有访问者 .

  • 1

    我在Objective-Swift项目中遇到了Mantle Framework的错误 . 我试过的是,

    • 检查Bridging-Header.h文件中是否有导入

    • Mantle.h 文件中更改Framework的目标成员资格,如下面的屏幕截图所示 .

    在私人会员之间切换首先构建项目,最终出现错误 . 然后使用公共成员身份为 Mantle.h 文件出现的所有框架构建项目,您必须获得成功 .

    这只是在Objective-C Swift项目中使用多个框架构建的错误 .

    enter image description here

  • 2

    你忘了申报变量了 . 只需将 var 放在 signedIn = false 前面

相关问题