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

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

Use of unresolved identifier ‘Static’

这是我在以前的版本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().

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

解决方法

静态在类变量中声明,导致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!
}
...

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...