- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我写了这段代码:
func getjson() {
let urlPath = "https://api.whitehouse.gov/v1/petitions.json?limit=100"
let url = NSURL(string: urlPath)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url!, completionHandler: {data, response, error -> Void in
print("Task completed")
if(error != nil) {
print(error!.localizedDescription)
}
let err: NSError?
if let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary {
if(err != nil) {
print("JSON Error \(err!.localizedDescription)")
}
if let results: NSArray = jsonResult["results"] as? NSArray {
dispatch_async(dispatch_get_main_queue(), {
self.tableData = results
self.Indextableview.reloadData()
})
}
}
})
task.resume()
}
更新到 XCode 7 后,它给了我这个错误:从抛出类型 (_, _, _) throws -> Void 到非抛出函数类型 (NSData?, NSURLResponse?, NSError?) 的无效转换 -> 无效。是排成一行的,let task 在哪里。
谢谢
最佳答案
您需要按如下方式实现 Do Try Catch 错误处理:
import UIKit
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
extension URL {
func asyncDownload(completion: @escaping (_ data: Data?, _ response: URLResponse?, _ error: Error?) -> ()) {
URLSession.shared
.dataTask(with: self, completionHandler: completion)
.resume()
}
}
let jsonURL = URL(string: "https://api.whitehouse.gov/v1/petitions.json?limit=100")!
let start = Date()
jsonURL.asyncDownload { data, response, error in
print("Download ended:", Date().description(with: .current))
print("Elapsed Time:", Date().timeIntervalSince(start), terminator: " seconds\n")
print("Data size:", data?.count ?? "nil", terminator: " bytes\n\n")
guard let data = data else {
print("URLSession dataTask error:", error ?? "nil")
return
}
do {
let jsonObject = try JSONSerialization.jsonObject(with: data)
if let dictionary = jsonObject as? [String: Any],
let results = dictionary["results"] as? [[String: Any]] {
DispatchQueue.main.async {
results.forEach { print($0["body"] ?? "", terminator: "\n\n") }
// self.tableData = results
// self.Indextableview.reloadData()
}
}
} catch {
print("JSONSerialization error:", error)
}
}
print("\nDownload started:", start.description(with: .current))
关于ios - 从 (_,_,_) 类型的抛出函数 throws -> Void 到非抛出函数类型 (NSData?, NSURLResponse?, NSError?) -> Void 的无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32800341/
我意识到这与此处的现有帖子相似,What's the Point of (NSError**)error? ,但我的问题有点不同。我了解双指针的工作原理,以及这是常见的 iOS API 错误模式。我的
我刚刚升级到 Xcode 6.3 和 Swift 1.2,并且正在更新语法。在我的项目中,我使用 TCBlobDownloadSwift用于一些常规下载任务。更新后,我从框架的以下方法中收到编译器错误
在下面的代码中NSError实例化(match是GameCenter的GKMatch): ... NSString * deviceID = appDelegate.deviceID;
我开发了一个 ios 应用程序,它有: NSError *error; 代替: NSError *error = nil; 当我在模拟器中调试和连接时在设备上调试时,它工作正常。在我将其存档并将其发
在我的 iOS 应用程序中,我需要播放声音。我有以下代码: var audioFileLocationUrl = NSBundle.mainBundle().pathForResource("midn
我正在使用外部组件连接到 SOAP 服务。当我收到结果时,它作为对象 value 返回,它可以包含 NSError 或结果对象。 如果出现错误,我想提取错误代码和消息。如何将 value 转换为 NS
我有一个 NSError ** 存储在一个数组中(所以我可以这样得到它 array[0])。我正在尝试将其转换为变量: NSError * __autoreleasing *errorPointer
我需要另一双眼睛。 奇怪的是,我似乎无法访问自定义 NSError 的属性。我不断收到 EXC_BAD_ACCESS 错误。这是我的代码: if (response.isUnautho
我收到这个错误: incompatible pointer types assigning to NSError _strong from NSError _autoreleasing 这是我的头文件
我正在 swift 中使用 AFNetworking,并且在将以下代码转换为 swift 时遇到问题 objective-c [client GET:url parameters:nil succes
physicsWorld.gravity = CGVector(dx: 0, dy: -2) physicsWorld.contactDelegate = self motionMan
这个问题类似于ios NSError types但是那里描述的解决方案没有用,我相信这不是我所需要的。 我有一个执行异步调用然后调用完成 block 的方法。当我尝试将 NSError ** 传递给完
我试图在 if let jsonData Array = try NSJSONSerialization... 行中从 Swift 1 转换为 2,因为它最初给了我一个来自“额外参数‘错误’的错误”
最近我刚刚将 swift 2.3 项目转换为 3.2,alamofire 也得到了转换,我收到了很多问题,其中大部分都已解决,现在我被给定的两个问题所困扰 问题在 alamofire 的 Respon
在我使用该方法之前几次... NSURLResponse *response; NSError *error; NSData *data = [NSURLConnection sendSynchron
这个相对简单的enum,编译得很好,但是...... public protocol AuthKitErrorProtocol { var error: NSError { get } } e
你好, 我正在尝试为接受 *NSError 作为参数的代码设置一些单元测试。如果存在验证问题,则不会保存对象并设置 NSError 条件。 我的方法是: - (BOOL)validateConsist
我想我在 NSError 上发现了一个错误,但想运行它让你们通过,看看是否真的只是我做错了什么。 在向使用 userInfo 的 NSError 实例发送描述时发生崩溃。如果将 userInfo 设置
对于这个问题,我使用的是我的实际代码的精简版本。 该应用程序使用 MVVM 架构构建。假设有一个登录屏幕。有3个文件。 ApiClient 文件与服务器通信并获取响应。如果输入的用户名和密码匹配,它会
例如 NSError *error = nil; if ([something error:&error]) { // ... } // ... if ([somethingElse er
我是一名优秀的程序员,十分优秀!