Swift 类“MyClass”没有名为“My_Var”的成员 [重复]
Posted
技术标签:
【中文标题】Swift 类“MyClass”没有名为“My_Var”的成员 [重复]【英文标题】:Swift class "MyClass" does not have a member Named "My_Var" [duplicate] 【发布时间】:2014-10-17 11:19:47 【问题描述】:我在 Swift 中创建了一个如下所示的类,但它给出了错误:
“ApiUrls.Type”没有名为“webUrl”的成员
这是我的代码:
import UIKit
class ApiUrls
let webUrl:NSString = "192.168.0.106:8888"
var getKey:NSString = webUrl + NSString("dev/sys/getkey") // here comes the error ApiUrls.Type' does not have a member named 'webUrl
这有什么问题?
【问题讨论】:
【参考方案1】:您不能使用另一个属性的值来初始化实例属性,因为在所有实例属性都初始化之前,self
不可用。
即使在初始化器中移动属性初始化也不起作用,因为getKey
依赖于webUrl
,所以getKey
在初始化之前无法初始化。
我看到webUrl
是一个常量,因此将其设为静态属性可能是个好主意 - 类目前还不支持静态,因此最好的方法是使用私有结构:
class ApiUrls
private struct Static
static let webUrl: String = "192.168.0.106:8888"
var getKey: String = Static.webUrl + "dev/sys/getkey"
另外,除非你有充分的理由,否则最好使用 swift 字符串而不是 NSString
。
【讨论】:
感谢您的解释【参考方案2】:据我所知,你不能像在类定义中那样初始化变量。
尝试将变量声明为
let webUrl:NSString = "192.168.0.106:8888"
var getKey:NSString = ""
并将其添加到 viewDidLoad
getKey = webUrl + NSString("dev/sys/getkey")
【讨论】:
我没有从 UIViewController 扩展我的类。因此我不能覆盖 didViewLoad 方法感谢顺便说一句 你可以在类的init()方法中进行然后....同样的效果以上是关于Swift 类“MyClass”没有名为“My_Var”的成员 [重复]的主要内容,如果未能解决你的问题,请参考以下文章