我遇到了一个问题,我尝试了不同的解决方案,但我还没有解决。 Instance member 'decodeJson' cannot be used on type 'Utils'
区域的问题是decodeJson
。如您所见,Utils类具有getDataWithURLSession
,decodeJson
和getDataWithURLSession
需要使用decodeJson
的不同功能。
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)
}
}
}
答案 0 :(得分:0)
如果我的问题正确,那么您正尝试在该类的方法中使用Utils类实例的私有方法,该方法未定义该实例。
要解决此问题,您有以下几种选择:
将两种方法都作为实例方法(使第一种方法不是静态的而是公开的)。
使两个方法成为Utils类方法 - 使第二个函数也是静态的。但在这种情况下,您必须在方法decodeJson中返回Utils类的实例,以便能够在其中存储categoryList变量。
如果您决定使用第二个选项并且代码中存在问题,请告诉我,我将在答案中添加代码