2016-06-15 4 views
-2

У меня есть метод createToken в классе API. Я хочу создать функцию «шифрования». Метод «шифрования» принимает один параметр как [String: String]. Но let encr = encryption(parameters) имеет ошибку - Невозможно преобразовать значение типа '[String : String]' Ожидаемые аргументы typeof "API"Невозможно преобразовать значение типов «[String: String]» ожидаемые аргументы typeof class

Как решить эту проблему?

Спасибо.

Кодекс:

class API { 

class func createToken() { 

    var parameters = [ 
     "key1": "value1", 
     "key2":"value2", 
     "key3": "value3" 
    ] 

    let encr = encryption(parameters) 

    let newParameters = [ 
     "key1": "value1", 
     "key2":"value2", 
     "key3": "value3", 
     "key4" : encr 
    ] 
} 

func encryption(parameters: [String:String]) -> String { 
    let sortedDict = parameters.sort { $0.0 < $1.0 } 
    var paramString = "" 

    for i in sortedDict { 
     paramString.addString(i.1) 
    } 

    paramString.addString("") 

    let encr = paramString.sha256() 

    return encr 
} 
} 
+3

Вы не можете вызвать функцию неклассов из функции класса, возможно, вам также нужно сделать 'encryption'' класс func'. – luk2302

+0

Пробовал и может подтвердить ответ luk2302 ... Просто нужен «класс» – AMAN77

+0

1. sha256 - это не шифрование, это односторонняя криптографическая хеш-функция. 2. Сортировка словаря не имеет никакого смысла. – zaph

ответ

0

Я реструктурировать свой класс. Теперь оба метода: class method.

class API { 

    class func createToken() { 

     let parameters = [ 
      "key1": "value1", 
      "key2":"value2", 
      "key3": "value3" 
     ] 

     let encr = API.encryption(parameters) 

     let newParameters = [ 
      "key1": "value1", 
      "key2": "value2", 
      "key3": "value3", 
      "key4" : encr 
     ] 

     // What do you want to do with newParameters? 
    } 

    class func encryption(parameters: [String:String]) -> String { 
     let sortedDict = parameters.sort { $0.0 < $1.0 } 
     let paramString = sortedDict.map { $0.1 }.reduce("") { $0 + $1 } 
     let encr = paramString.sha256() 
     return encr 
    } 
} 
Смежные вопросы