在 类 之间传递数据时出现问题

Occuring issue while passing data between classes

我正在尝试将数据从我的数据 class 传递到我的登录名 class(两个文件是分开的。),但它从 "Login" [=46] 中抛出 2 个错误=] 因为它似乎无法接收数据

下面是 Login.swift 中显示的错误:

错误 1

Instance member 'dataObj' cannot be used on type 'Login'

错误 2

Expected declaration

Login.swift代码

import Foundation
import Alamofire
import SwiftyJSON
class Login {let dataObj = Data(userName: "username", passWord: "password")

let endPoint = dataObj.todoEndPoint
let parameters = [
    "username": dataObj.userName,
    "password": dataObj.passWord
]

Alamofire.request(.POST, endPoint, parameters:parameters)
.responseJSON { response in
print(response.request)
print(response.response)
print(response.result)
if let JSON = response.result.value {
print("Did receive JSON data: \(JSON)")
}
else {
print("JSON data is nil.")
}
}   
}

Data.swift代码

import Foundation
import Alamofire
import SwiftyJSON

class Data {

var userName:String!
var passWord:String!
let todoEndpoint: String = "http://jsonplaceholder.typicode.com/todos/1"

init(userName : String, passWord : String) {
    self.userName = userName
    self.passWord = passWord
}
}

错误截图

根据您的 Data class 实现,您应该像这样使用它:

class Login {
let dataObj = Data(userName : "username", passWord : "password")
let endPoint = dataObj.todoEndPoint
let parameters = [
               "username": dataObj.userName,
               "password": dataObj.passWord
    ]

    Alamofire.request(.POST, endPoint, parameters:parameters)
        .responseJSON { response in
            print(response.request)
            print(response.response)
            print(response.result)
            if let JSON = response.result.value {
                print("Did receive JSON data: \(JSON)")
            }
            else {
                print("JSON data is nil.")
            }

    }

    }

如果您想从 Data 获取静态数据,请使用 singleton/shared instance

您只需使用静态

将数据实例 属性 更改为 class 属性
class Data {

static var userName:String!
static var passWord:String! 
static let todoEndpoint: String = "http://jsonplaceholder.typicode.com/todos/1"

}

并在 userNamepassWord 中设置直接值。

来自登录设置值

Data.userName = "yourusername" 
Data.passWord = "password"

2. 或者您也可以创建数据对象

class Data {

 var userName:String!
 var passWord:String!
 let todoEndpoint: String = "http://jsonplaceholder.typicode.com/todos/1"

init(userName : String, passWord : String) {

 self.userName = userName 
 self.passWord = passWord
}

并在登录中class

class Login {
static let dataObj = Data(userName: "usename", passWord: "password")

lazy var endPoint = Login.dataObj.todoEndpoint

let parameters = [
           "username": dataObj.userName,
           "password": dataObj.passWord
]


func getRequest() {

Alamofire.request(.POST, endPoint, parameters:parameters)
    .responseJSON { response in
        print(response.request)
        print(response.response)
        print(response.result)
        if let JSON = response.result.value {
            print("Did receive JSON data: \(JSON)")
        }
        else {
            print("JSON data is nil.")
        }
}
}

}

已更新

我想你应该创建一个单例对象来获取所有用户的值。

class Data {

 static let sharedInstance = Data()
 static let todoEndpoint: String = "http://jsonplaceholder.typicode.com/todos/1"
 var userName: String?
 var passWord: String?

 // for prevent from creating this class object
 private init() { }

 }

并在登录中 class。

class Login {

 init(userName: String, passWord: String) {
 Data.sharedInstance.userName = userName
 Data.sharedInstance.passWord = passWord
  }

 /// call this method to login
 func getRequest() {
 print(Data.sharedInstance.userName)
 print(Data.sharedInstance.passWord) 

 Alamofire.request(.POST, Data.endPoint, parameters: ["userName": Data.sharedInstance.userName, "passWord": Data.sharedInstance.passWord])
.responseJSON { response in
print(response.request)
print(response.response)
print(response.result)
if let JSON = response.result.value {
print("Did receive JSON data: \(JSON)")
}
else {
print("JSON data is nil.")
}

}

}
}

并从其他一些 class 创建一个 Login 实例并从那里传递 userNamePassword 值,并使用 Login 对象调用 getRequest 方法。