問題に直面して別の解決策を試みましたが、まだ解決できませんでした。問題は、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)
}
}
}
おかげでコードを追加します。最初の解決策を試しましたが、うまくいきませんそこで、関数の名前を変更しました。 'static func getDataWithURLSession(withtoken:String){'から へ 'public func getDataWithURLSession(withtoken:String){'と 'private func decodeJson(data:Data?){'から ' public function decodeJson(data:Data?) - > [Any] 'を追加し、' return categoryList'を追加しました。実際に私のutilsクラスの問題は解決されていますが、私はAppDelegate.swiftでgetDataWithURLSession関数を呼び出すと、 'Instanceメンバ 'getDataWithURLSession'は 'Utils'型では使用できません。 ' – Guray
両方のオプションは、格納されたプロパティを持つUtilsオブジェクトをどこで使うのかによって異なります。なぜ最初の方法が機能していないのですか?私はあなたがオブジェクトを持って、それをgetDataWithURLSessionを呼び出すことによってcategoryListを埋める必要があると思った。あなたは、アプリケーションデリゲートと他の場所で使用しているコードを表示できますか?私はあなたがそれをどのように使用するのかを意味します。私たちはあなたがそれをインスタンスのものにしようとしている間にクラスメソッドとして呼び出すと思います。 – Woof