2017-01-26 8 views
-1

クラスに関数を書く際に問題が発生しました。私はイニシャライザを使ってクラスを作成し、関数を作成しようとしていますが、エラーが発生しています。ウィジェットの初期化子です。イニシャライザは型式内でのみ宣言できます3

初期化子はあるタイプ内でのみ宣言できます。

マイコード:

class JsonParams { 
let Login_Token = "00000000000000000000000000000000" 
init() { 
} 

func Jsonrequests (userName: String, password: String){ 

    let param : [String: Any] = ["jsonrpc": "2.0", "id": 1, "method": "call", "params": [ self.Login_Token, "session", "login", [ "username": self.userName, "password": self.password]]] 
    self.param = param 

    return 
} 
+0

あなたのコードを正しくインデントすると、 'init()'が関数の中にあることがわかります... –

答えて

1

init()を削除し、あなたのコードをきれい:あなたはまた、使用することができますので、のparamsを保存したくないAfaics

class JsonParams { 
    let loginToken = "00000000000000000000000000000000" 

    func jsonRequests(userName: String, password: String) -> [String:Any] { 

     let params: [String : Any] = ["jsonrpc": "2.0", 
       "id": 1, 
       "method": "call", 
       "params": [ self.loginToken, "session", "login", [ "username": userName, "password": password]] 
     ] 

     return params 
    } 
} 

静的バージョン:

class JsonParams { 
    static let loginToken = "00000000000000000000000000000000" 

    static func createParams(userName: String, password: String) -> [String:Any] { 

     let param: [String : Any] = ["jsonrpc": "2.0", 
           "id": 1, 
           "method": "call", 
           "params": [ self.loginToken, "session", "login", [ "username": userName, "password": password]] 
     ] 

     return param 
    } 
} 
後でこのように呼び出すことができ

は:

let params = JsonParams.createParams(userName: "myName", password: "myPass") 

あなたは間違いなくlearn Swiftcode, naming and style conventionsに準拠する必要があります。

+0

ありがとう、あなたが私に必要なものを正確に書いてくれました! –

+0

静的なバージョンを使用し、alamofireリクエストにparamsを渡した後でもう少し質問がありますが、私はparamsの最初のバージョンでは得られなかったエラーはほとんどありません。 Alamofire.request(URL、メソッド:.post、parameters:params)、エンコード:JSONEncoding.default).responseJSON { –

+0

の応答と今?どのような誤りがあり、その理由は何かを推測するはずですか?プラスそれを修正?静的バージョンと非静的バージョンは同等のものでなければなりません。結果のパラメータがどのように見えて、あなたのコードを引き継ぐのか分かりません。 '' self.loginToken''と '' session''をスワップしなければならない、あるいは '' params ":[[session":self.loginToken]、[ログイン ":["ユーザー名 ":ユーザー名、"パスワード ":パスワード]]]'。しかし、それはあなたの質問に関してのみ推測であり、また話題にはなりません。 – shallowThought

関連する問題