2016-09-16 123 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! 
} 
...