2016-09-16 122 views
6

我更新了xcode 8.0 swift 3,并且发现了很多错误。这就是其中之一:使用未解析标识符'静态'

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

这是我的课,我创建和以前版本的Xcode 7.3.1工作迅速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()。

我不知道为什么我得到这个,别人知道吗?

+0

Static是Swift的保留关键字。请将其改为其他名称。 –

回答

7

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! 
} 
...