使用未解析的标识符“静态”

Posted

技术标签:

【中文标题】使用未解析的标识符“静态”【英文标题】:Use of unresolved identifier 'Static' 【发布时间】:2016-09-16 01:18:34 【问题描述】:

我已经更新了 xcode 8.0 swift 3 并且发现了很多错误。这是其中之一:

这是我在以前版本 xcode 7.3.1 swift 2 中创建和工作的课程。

import UIKit

enum FONTSIZE:Int

    case sizesmall = 1
    case sizesbig = 2
    case sizemedium = 3


class sizeFont: NSObject 

    private static var __once: () = 
            Static.instance = sizeFont()
        ()

    class func getSize(_ enumFont : FONTSIZE) -> CGFloat 
        var siz = 17
        switch(enumFont)
        case .sizesbig:
            if((UserDefaults.standard.value(forKey: "fontsize") as AnyObject).int32Value == 0)// kecil
                if(isphone())
                    siz = 22//17
                else
                    siz = 22//24
                

            else if((UserDefaults.standard.value(forKey: "fontsize") as AnyObject).int32Value == 1)// besar
                if(isphone())
                    siz = 30//19
                else
                    siz = 30//28
                
            else
                if(isphone())
                    siz = 22//17
                else
                    siz = 22//22
                
            

            break
        case .sizesmall:
            if((UserDefaults.standard.value(forKey: "fontsize") as AnyObject).int32Value == 0)// kecil
                if(isphone())
                    siz = 17//15//12
                else
                    siz = 24//22//19
                
            else if((UserDefaults.standard.value(forKey: "fontsize") as AnyObject).int32Value == 1)// besar
                if(isphone())
                    siz = 19//17//15
                else
                    siz = 28//26//24
                
            else
                if(isphone())
                    siz = 17//15//12
                else
                    siz = 24//22//19
                
            
            break
        case .sizemedium:
            if((UserDefaults.standard.value(forKey: "fontsize") as AnyObject).int32Value == 0)// kecil
                if(isphone())
                    siz = 15
                else
                    siz = 22
                
            else if((UserDefaults.standard.value(forKey: "fontsize") as AnyObject).int32Value == 1)// besar
                if(isphone())
                    siz = 17
                else
                    siz = 26
                
            else
                if(isphone())
                    siz = 15
                else
                    siz = 22
                
            
            break
        
        return CGFloat(siz)
    

    func getnametag()

    

    class func isphone() ->Bool 
        if(UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.phone)
            return true
        else
            return false
        
    

    // example singleton swift
    class var sharedInstance: sizeFont 
        struct Static 
            static var onceToken: Int = 0
            static var instance: sizeFont? = nil
        
        _ = sizeFont.__once
        return Static.instance!
    



红线代码为Static.instance = sizeFont()。

我不知道我为什么会得到这个,有其他人知道吗?

【问题讨论】:

Static 是 Swift 的保留关键字。请将其更改为其他名称。 【参考方案1】:

Static 在类变量中声明,导致 var 声明之外的每个人都无法访问,只需将其移至外部即可。

...
struct Static 
    static var onceToken: Int = 0
    static var instance: sizeFont? = nil

// example singleton swift
class var sharedInstance: sizeFont 
    _ = sizeFont.__once
    return Static.instance!

...

【讨论】:

以上是关于使用未解析的标识符“静态”的主要内容,如果未能解决你的问题,请参考以下文章

使用未解析的标识符 FBSession

使用未解析的标识符 'json' (Swift 3) (Alamofire)

出现错误:使用未解析的标识符“LinkingObjects”

SDKApplicationDelegate 使用未解析的标识符

使用未解析的标识符 countElements [重复]

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