我已经更新了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()。
我不知道为什么我会这样,其他人都知道吗?
答案 0 :(得分: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!
}
...