将侦听器添加到 class 的全局实例中的变量
Add listener to a variable in a global instance of a class
我有一个用户 Class,它包含该特定用户的详细信息、身份验证状态和一个标志,告诉我我的用户数据是否已被检索:
// Users class
class user_Global {
static let shared_Instance = user_Global()
var is_Retrieved : Bool = false
var is_Authenticated : Bool = false
var user : users_Status = users_Status.init(name: "Global user", is_Master: false, EY_ID : "N/A", ey_Email : "N/A", UUID : "N/A")
}
// Structure
struct users_Status{
var user_Name : String!
var is_User_Master : Bool!
var user_EY_Email : String!
var user_UUID : String!
var user_EY_ID : String!
init(name : String!, is_Master : Bool!, EY_ID : String! ,ey_Email : String!, UUID : String!){
self.user_Name = name
self.is_User_Master = is_Master
self.user_EY_Email = ey_Email
self.user_UUID = UUID
self.user_EY_ID = EY_ID
}
}
在我的应用程序中更进一步,我几乎没有只允许经过身份验证的用户使用的功能,问题是此状态可以随时更改。我如何向该变量添加侦听器,即 user_Global.shared_Instance..
中的 is_Authenticated
以对我的后续 类.
我确实考虑过使用协议委托方法,但无法使其运行。不知何故,我的协议符合 类 没有调用协议的功能。
编辑 1
class user_Global {
var refresh_Delegate : user_Data_Refresh!
static let shared_Instance = user_Global()
var is_Retrieved : Bool = false
var is_Authenticated : Bool = false{
didSet{
print(oldValue)
print(is_Authenticated)
}
}
var user : users_Status = users_Status.init(name: "Global user", is_Master: false, EY_ID : "N/A", ey_Email : "N/A", UUID : "N/A"){
didSet{
if user.is_User_Master == true{
print("The user has MASTER Permissions")
user_Data_Refresh.refresh_User_State() // This is the line where is get an error
}else{
print("Master Auth was terminated!")
}
}
}
}
// Protocol :
protocol user_Data_Refresh {
func refresh_User_State()
}
PS: user
在我从我的数据库中检索值后更新。确认数据已检索 is_Retrieved
标志。
为此使用 属性 个观察者:
class user_Global {
static let shared_Instance = user_Global()
var is_Retrieved : Bool = false
var is_Authenticated : Bool = false {
didSet {
// Your code here
}
}
var user : users_Status = users_Status.init(name: "Global user", is_Master: false, EY_ID : "N/A", ey_Email : "N/A", UUID : "N/A")
}
更新
您在那里有一个协议定义,user_Global
定义了一个符合此协议的委托 var refresh_Delegate : user_Data_Refresh!
(PS:委托通常是可选的)。
上述行的问题:
user_Data_Refresh.refresh_User_State()
是你没有使用委托对象调用函数,而是使用它的类型,这是错误的。
将其替换为
refresh_Delegate.refresh_User_State()
它应该可以工作。
注意:看起来您正在从后端开发或 C/C++ 或类似的东西转向 Swift。请花时间修改 Swift API design guidelines 以更多地接触命名约定。你的代码很难读。
我有一个用户 Class,它包含该特定用户的详细信息、身份验证状态和一个标志,告诉我我的用户数据是否已被检索:
// Users class
class user_Global {
static let shared_Instance = user_Global()
var is_Retrieved : Bool = false
var is_Authenticated : Bool = false
var user : users_Status = users_Status.init(name: "Global user", is_Master: false, EY_ID : "N/A", ey_Email : "N/A", UUID : "N/A")
}
// Structure
struct users_Status{
var user_Name : String!
var is_User_Master : Bool!
var user_EY_Email : String!
var user_UUID : String!
var user_EY_ID : String!
init(name : String!, is_Master : Bool!, EY_ID : String! ,ey_Email : String!, UUID : String!){
self.user_Name = name
self.is_User_Master = is_Master
self.user_EY_Email = ey_Email
self.user_UUID = UUID
self.user_EY_ID = EY_ID
}
}
在我的应用程序中更进一步,我几乎没有只允许经过身份验证的用户使用的功能,问题是此状态可以随时更改。我如何向该变量添加侦听器,即 user_Global.shared_Instance..
中的 is_Authenticated
以对我的后续 类.
我确实考虑过使用协议委托方法,但无法使其运行。不知何故,我的协议符合 类 没有调用协议的功能。
编辑 1
class user_Global {
var refresh_Delegate : user_Data_Refresh!
static let shared_Instance = user_Global()
var is_Retrieved : Bool = false
var is_Authenticated : Bool = false{
didSet{
print(oldValue)
print(is_Authenticated)
}
}
var user : users_Status = users_Status.init(name: "Global user", is_Master: false, EY_ID : "N/A", ey_Email : "N/A", UUID : "N/A"){
didSet{
if user.is_User_Master == true{
print("The user has MASTER Permissions")
user_Data_Refresh.refresh_User_State() // This is the line where is get an error
}else{
print("Master Auth was terminated!")
}
}
}
}
// Protocol :
protocol user_Data_Refresh {
func refresh_User_State()
}
PS: user
在我从我的数据库中检索值后更新。确认数据已检索 is_Retrieved
标志。
为此使用 属性 个观察者:
class user_Global {
static let shared_Instance = user_Global()
var is_Retrieved : Bool = false
var is_Authenticated : Bool = false {
didSet {
// Your code here
}
}
var user : users_Status = users_Status.init(name: "Global user", is_Master: false, EY_ID : "N/A", ey_Email : "N/A", UUID : "N/A")
}
更新
您在那里有一个协议定义,user_Global
定义了一个符合此协议的委托 var refresh_Delegate : user_Data_Refresh!
(PS:委托通常是可选的)。
上述行的问题:
user_Data_Refresh.refresh_User_State()
是你没有使用委托对象调用函数,而是使用它的类型,这是错误的。 将其替换为
refresh_Delegate.refresh_User_State()
它应该可以工作。
注意:看起来您正在从后端开发或 C/C++ 或类似的东西转向 Swift。请花时间修改 Swift API design guidelines 以更多地接触命名约定。你的代码很难读。