문제가 발생하여 다른 해결책을 시도했지만 아직 해결할 수 없습니다. 문제는 decodeJson
영역의 Instance member 'decodeJson' cannot be used on type 'Utils'
입니다. 아시다시피 Utils 클래스는 getDataWithURLSession
, decodeJson
및 getDataWithURLSession
의 각기 다른 기능을 가지고 있으며 decodeJson
을 사용해야합니다.인스턴스 멤버 'decodeJson'을 '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)
}
}
}
감사의 코드를 추가합니다. 첫 번째 해결책을 시도했지만 작동하지 않았습니다. 그래서 함수의 이름을 으로 변경했습니다. 정적 함수 getDataWithURLSession (withtoken : 문자열) {' ''에 public function getDataWithURLSession (withtoken : 문자열) {'및 ''은 private function decodeJson (data : Data?) {'~ ' public function decodeJson (data : Data?) -> [Any]'를 추가하고'return categoryList'를 추가했습니다. 사실 내 utils 클래스 문제가 해결되지만 AppDelegate.swift에서 getDataWithURLSession 함수를 호출 할 때 'Instance member'getDataWithURLSession '과 같은 다른 문제가'Utils '유형에 사용할 수 없습니다. 대신이 유형의 값을 사용 했습니까? ' – Guray
두 옵션 모두는 저장된 속성이있는 Utils 객체를 어디에서 사용할 것인지에 따라 다릅니다. 첫 번째 방법이 효과가없는 이유는 무엇입니까? getDataWithURLSession을 호출하여 객체가 있어야하며 categoryList를 채울 필요가 있다고 생각했습니다. 앱 위임과 다른 곳에서 사용중인 코드를 보여줄 수 있습니까? 나는 당신이 그것을 어떻게 사용할 것인지를 의미합니다. 우리는 그것을 인스턴스 메소드로 만들려고하면서 클래스 메소드라고 부르고 있다고 생각합니다. – Woof