Ich konfrontiere ein Problem und ich versuchte verschiedene Lösungen, aber ich konnte noch nicht lösen. Das Problem ist Instance member 'decodeJson' cannot be used on type 'Utils'
auf decodeJson
Bereich. Wie Sie sehen können Utils Klasse hat verschiedene Funktionen, die getDataWithURLSession
, decodeJson
und getDataWithURLSession
müssen decodeJson
verwenden.Instance Mitglied 'decodeJson' kann nicht auf Typ 'Utils' verwendet werden
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)
}
}
}
Dank hinzufügen. Ich habe versucht erste Lösung, aber nicht funktioniert. Also änderte ich den Namen Funktion 'statische func getDataWithURLSession (withtoken: String) {' zu 'öffentlichen func getDataWithURLSession (withtoken: String) {' und 'Private func decodeJson (Daten: Data) {' zu ' public func decodeJson (Daten: Daten?) -> [Any] 'und hinzugefügt' return categoryList'. Eigentlich ist mein utils-Klassenproblem gelöst, aber als ich die Funktion getDataWithURLSession bei AppDelegate.swift anrufe, sah ich ein anderes Problem, wie 'Instance-Member 'getDataWithURLSession' kann nicht für den Typ 'Utils' verwendet werden; meinst du, stattdessen einen Wert dieses Typs zu verwenden? ' – Guray
Beide Optionen hängen davon ab, wo du dein Utils-Objekt mit gespeicherter Eigenschaft verwenden willst. Warum funktioniert die erste Methode nicht? Ich dachte, dass du ein Objekt haben musst und fülle es mit categoryList, indem du getDataWithURLSession aufruft. Können Sie den Code, den Sie verwenden, im App-Delegaten und an anderer Stelle anzeigen? Ich meine, wie du es benutzen wirst. Ich denke, Sie nennen es als eine Klassenmethode, während wir versuchen, es zu einer Instanz zu machen. – Woof