আমি আমার সুইফট প্রকল্পে একটি ইউটিলিটি ক্লাস তৈরি করেছি যা সমস্ত আরআরইএসটি অনুরোধ এবং প্রতিক্রিয়াগুলি পরিচালনা করে। আমি একটি সাধারণ REST এপিআই তৈরি করেছি যাতে আমি আমার কোড পরীক্ষা করতে পারি। আমি একটি ক্লাস পদ্ধতি তৈরি করেছি যার একটি এনএসআরিকে ফিরিয়ে নেওয়া দরকার তবে এপিআই কল এসিঙ্ক হওয়ায় আমার এসিঙ্ক কলের অভ্যন্তরীন পদ্ধতিটি থেকে ফিরে আসতে হবে। সমস্যাটি হ'ল অ্যাসিঙ্ক রিটার্ন শূন্য। যদি আমি নোডে এটি করছিলাম তবে আমি জেএস প্রতিশ্রুতি ব্যবহার করব তবে আমি সুইফটে কাজ করে এমন কোনও সমাধান বের করতে পারি না।
import Foundation
class Bookshop {
class func getGenres() -> NSArray {
println("Hello inside getGenres")
let urlPath = "http://creative.coventry.ac.uk/~bookshop/v1.1/index.php/genre/list"
println(urlPath)
let url: NSURL = NSURL(string: urlPath)
let session = NSURLSession.sharedSession()
var resultsArray:NSArray!
let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in
println("Task completed")
if(error) {
println(error.localizedDescription)
}
var err: NSError?
var options:NSJSONReadingOptions = NSJSONReadingOptions.MutableContainers
var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: options, error: &err) as NSDictionary
if(err != nil) {
println("JSON Error \(err!.localizedDescription)")
}
//NSLog("jsonResults %@", jsonResult)
let results: NSArray = jsonResult["genres"] as NSArray
NSLog("jsonResults %@", results)
resultsArray = results
return resultsArray // error [anyObject] is not a subType of 'Void'
})
task.resume()
//return "Hello World!"
// I want to return the NSArray...
}
}