我遇到严重的性能问题,从我们的APIparsing与SwiftyJson的JSON和填充核心数据。 数据与Alamofire一起下载,很好地工作,但用SwiftyJsonparsingJson是痛苦的缓慢。 为了看看这个库是否真的是这个问题,我重写了parsing数据的许多地方之一的jsonparsing。 在下面的代码中,我parsing了大约400个旅游景点之一的开放时间。 查看这些截图中的差异,7,7秒到185毫秒: Swifty方式: let openDescription:String = json["OpeningHours"]["OpeningHoursGenericExceptions"].string! let monOpen:[String] = json["OpeningHours"]["Monday"]["From"].string!.componentsSeparatedByString(":") let monClose:[String] = json["OpeningHours"]["Monday"]["To"].string!.componentsSeparatedByString(":") let tueOpen:[String] = json["OpeningHours"]["Tuesday"]["From"].string!.componentsSeparatedByString(":") let tueClose:[String] = json["OpeningHours"]["Tuesday"]["To"].string!.componentsSeparatedByString(":") let wedOpen:[String] = json["OpeningHours"]["Wednesday"]["From"].string!.componentsSeparatedByString(":") let wedClose:[String] = json["OpeningHours"]["Wednesday"]["To"].string!.componentsSeparatedByString(":") let thuOpen:[String] = json["OpeningHours"]["Thursday"]["From"].string!.componentsSeparatedByString(":") let thuClose:[String] = json["OpeningHours"]["Thursday"]["To"].string!.componentsSeparatedByString(":") let friOpen:[String] = json["OpeningHours"]["Friday"]["From"].string!.componentsSeparatedByString(":") let friClose:[String] = json["OpeningHours"]["Friday"]["To"].string!.componentsSeparatedByString(":") let satOpen:[String] = json["OpeningHours"]["Saturday"]["From"].string!.componentsSeparatedByString(":") let […]
嗨,我有以下代码访问一个URL: NSString * stringURL = [NSString stringWithFormat:@"%@/%@/someAPI", kSERVICE_URL, kSERVICE_VERSION]; NSURLRequest * request = [NSURLRequest requestWithURL:[NSURL URLWithString:stringURL]]; AFJSONRequestOperation * operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { completionHandler(JSON, nil); } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { completionHandler(nil, error); }]; 但是我希望将用户标记作为HEADER上的parameter passing,如X-USER-TOKEN 。 不能在AFNetworking documentationfind它,我应该改变操作types?
当按下Submitbutton时,我在loginViewController中有这个调用: let http = HTTPHelper() http.post("http://someUrl.com/Login/userEmail/\(username.text)/Pswd/\(userPass.text)", postCompleted: self.checkLogin) 而我发送的checkLogin函数只是在执行: func checkLogin(succeed: Bool, msg: String){ if (succeed){ self.performSegueWithIdentifier("logInTrue", sender: self) } } 后台function是HTTPHelper类是: func post(url : String, postCompleted : (succeeded: Bool, msg: String) -> ()) { var request = NSMutableURLRequest(URL: NSURL(string: url)!) var session = NSURLSession.sharedSession() request.HTTPMethod = "POST" var err: NSError? self.task = session.dataTaskWithURL(NSURL(string: url)!) […]
编辑07/14 正如Bill Burgess在回答他的评论时提到的,这个问题与AFNetworking version 1.3有关。 这里的新手可能已经过时了。 我对iPhone开发非常陌生,我正在使用AFNetworking作为我的服务库。 我查询的API是一个RESTful的,我需要做POST请求。 要做到这一点,我试着用下面的代码: NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:@"my_username", @"username", @"my_password", @"password", nil]; NSURL *url = [NSURL URLWithString:@"http://localhost:8080/login"]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSLog(@"Pass Response = %@", JSON); } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { […]
我需要得到JSON响应数组的所有索引值和维护单独的数组。 下面我已经发布了我的JSON响应,我想得到如下所示的控制台输出。 请帮帮我。 response : [ { A = [ { name : "sons"; age = [ 4 ]; }, { name : "rondo"; age = [ 2 ]; }, ]; } ] 我需要存储单独的数组,单独的值看起来像下面的控制台输出 2014-09-18 10:24:39.461 Myapp[1133:60b] RESULT : { name = "sons"; age = 4; } 2014-09-18 10:24:39.462 Myapp[1133:60b] RESULT : { name = […]
我新使用Alamofire并遇到问题。 我可以运行下面的代码来打印出API端点的所有数据。 Alamofire.request("http://codewithchris.com/code/afsample.json").responseJSON { response in if let JSON = response.result.value { print(JSON) } } 问题是,当我运行这个: Alamofire.request("http://codewithchris.com/code/afsample.json").responseJSON { response in if let JSON = response.result.value { print(JSON["firstkey"]) } } 我得到的错误: types“任何”没有下标成员 我不知道为什么这个错误发生,似乎我正确访问数据。 任何帮助将是伟大的,谢谢! 我已经尝试使用两种格式: 打印(JSON [“firstkey”]作为string) 和 打印(JSON [“firstkey”]为[String:Any] 但他们仍然给出同样的错误。 这是我的端点上的JSON: { "firstkey":"it worked!", "secondkey":["item1", "item2", "item3"] }
这是我必须在我的项目中实现的示例json代码,请告诉我如何编写代码。 我多次写代码。 这根本不是工作。 所以我希望全部例子。 在这里我可以看到,首先有一个对象,接下来有一个多个对象,最后是一个对象内的数组。 请看详情… ActivityIndicator.customActivityIndicatory(self.view, startAnimate: true) let url = URL(string: Configuration.BASE_URL+"/products/"+String(category_id)+"?page=1") // sir // let url = URL(string: Configuration.BASE_URL+"/products/"+String(category_id)) // sir URLSession.shared.dataTask(with:url!) { (urlContent, response, error) in if error != nil { print(error) } else { do { let json = try JSONSerialization.jsonObject(with: urlContent!) as! [String:Any] let items = json["products"] as? [[String: […]
我需要从json请求中获取值“maxtemp_c”,但它不起作用。 这是我所做的,当我尝试parsingJSON并且值为零时,它将会阻塞 //url of the json let url = URL(string: "http://api.apixu.com/v1/forecast.json?key=6cffef39633d4489a0e101339171811&q=Loria&days=3")! let taskfor = URLSession.shared.dataTask(with: url) { (data, response, error) in if error != nil { print("some error occured") } else { if error == nil { do{ let jsonResult = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String : AnyObject] let forecast = jsonResult["forecast"] as? […]
星期一,星期二,星期天,我有一个7行的表格视图。 我的应用程序接收来自Web服务的json格式为: ({ appointments = ( { numApts = 1; scheduleDate = "2015-11-02"; }, { numApts = 2; scheduleDate = "2015-11-04"; } ); }) 所以我试图通过JSON响应循环,并更新我们的工作日的标签,如果它匹配收到的JSONdate。 不知道如何实现这一点。 我需要一个模型class吗? 就像是: import UIKit class CurrentRosterModel { var numApts : String? var scheduleDate : String? init(json : NSDictionary){ self.numApts = json["numApts"] as? String self.scheduleDate = json["scheduleDate"] as? String } […]
我一直在创build一个从JSON脚本中检索对象的函数。 我select这个使用alamofire作为asynchronous请求和swiftyJSON以便于parsing。 不过,我似乎有一个问题,阻止用户界面? 当它是asynchronous请求时,它怎么做? 我是否需要在单独的线程上运行它,或者解释是什么? 基本上我的意思是阻止用户界面,它是不会在其他button下面的function完成执行之前作出反应。 func getRecent() { var url = "http://URL/recent.php?lastid=\(lastObjectIndex)&limit=\(numberOfRecordsPerAPICall)" isApiCalling = true request(.GET, url, parameters: nil) .response { (request, response, data, error) in if error == nil { let data: AnyObject = data! let jsonArray = JSON(data: data as! NSData) if jsonArray.count < self.numberOfRecordsPerAPICall { self.recentCount = 0 self.tableVIew.tableFooterView = nil […]