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

前端之家收集整理的这篇文章主要介绍了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相关文章