Je suis confronté à un problème et j'ai essayé différentes solutions mais je n'ai pas encore pu résoudre. Le problème est Instance member 'decodeJson' cannot be used on type 'Utils'
sur la zone decodeJson
. Comme vous pouvez le voir la classe Utils a différentes fonctions qui getDataWithURLSession
, decodeJson
et getDataWithURLSession
besoin d'utiliser decodeJson
.Le membre d'instance 'decodeJson' ne peut pas être utilisé sur le type 'Utils'
public class Utils {
static var ApiURL = "http://xxx"
var categoryList = [MangaCategory]()
//MARK - JSON Searilization
@available(iOS 10.0, *)
static func getDataWithURLSession(withtoken: String){
guard let url = URL(string: Utils.ApiURL + "/Category/Get") else {return}
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("Bearer " + withtoken, forHTTPHeaderField: "Authorization")
guard let httpBody = try? JSONSerialization.data(withJSONObject: [], options: []) else { return }
request.httpBody = httpBody
let task = URLSession.shared.dataTask(with: request) { (data, response, err) in
decodeJson(data: data)
}
task.resume()
}
@available(iOS 10.0, *)
private func decodeJson(data:Data?){
guard let data = data else {return}
dump(data)
do {
let json = try JSONDecoder().decode(Categorys.self, from: data)
for manga in json.data{
if json.data.count > categoryList.count
{
let cat = MangaCategory(context: CoreDataService.context)
cat.category_name = manga.name
cat.category_id = Int16(manga.id)!
CoreDataService.saveContext()
self.categoryList.append(cat)
}
else{
print("JSon Serialization Es Geçildi.")
}
}
} catch let jsonError {
print("JSON Serializing error : ", jsonError)
}
}
}
Merci. J'ai essayé la première solution mais ne fonctionnait pas. Donc, j'ai changé le nom de la fonction 'static func getDataWithURLSession (withtoken: String) {' à 'public func getDataWithURLSession (avectoken: String) {' et 'privé func decodeJson (data: Data?) {' À ' public func decodeJson (data: Data?) -> [Any] 'et ajouté' return categoryList'. En fait mon problème de classe d'utils est résolu mais quand j'appelle la fonction de getDataWithURLSession à AppDelegate.swift j'ai vu différent problème comme 'le membre d'instance 'getDataWithURLSession' ne peut pas être employé sur le type 'Utils'; vouliez-vous utiliser une valeur de ce type à la place? ' – Guray
Les deux options dépendent de l'endroit où vous allez utiliser votre objet Utils avec la propriété stockée. Pourquoi la première méthode ne fonctionne pas? Je pensais que vous aviez besoin d'un objet et remplissez-le categoryList en appelant getDataWithURLSession. Pourriez-vous afficher le code que vous utilisez dans le délégué de l'application et ailleurs. Je veux dire comment tu vas l'utiliser. Je pense que vous l'appelez comme une méthode de classe pendant que nous essayons d'en faire une instance. – Woof