ios - 将 NSJSONSerialization 从 Swift 转换为 Objc C

标签 ios objective-c swift

我正在尝试将 swift 代码转换为 Objective C ,因为 swift 自己处理错误,所以我对这里的转换有点困惑,这是 swift 代码:

  func connectionDidFinishLoading(connection: NSURLConnection){
        DictonaryData = (try! NSJSONSerialization.JSONObjectWithData(main_data, options: NSJSONReadingOptions.MutableContainers)) as! NSDictionary
              main_data = NSMutableData()
        delegate!.connectionDidFinish(self.identifier)
    }
}

这是 Objective C 代码

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

    NSError *error = nil;

    dictonaryData = (NSDictionary*)[NSJSONSerialization JSONObjectWithData:main_data options:NSJSONReadingMutableContainers error:&error];

}

在 swift 代码中,有代码 main_data = NSMutableData() delegate!.connectionDidFinish(self.identifier) 如何将这部分转换为 Objective C ?我对 swift 不熟悉。感谢您的帮助

最佳答案

main_data = [NSMutableData new];
[delegate connectionDidFinish:self.identifier];

还有

delegate!.connectionDidFinish(self.identifier)

如果未为委托(delegate)对象实现 connectionDidFinish 将会崩溃(与我的 objective-c 代码相同)。要修复崩溃,您需要将 Swift 实现更改为

delegate?.connectionDidFinish(self.identifier)

对于 objective-c:

if ([delegate respondsToSelector:@selector(connectionDidFinish:)]) {
    [delegate connectionDidFinish:self.identifier];
}

关于ios - 将 NSJSONSerialization 从 Swift 转换为 Objc C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35200284/

相关文章:

ios - Realm swift : Update an object inside a closure

ios - 如何搜索 Crashlytics 自定义键

objective-c - 使用 ImageView 快速连续显示多张图像

Swift 4 Decodable - 以枚举为键的字典

arrays - 将元组附加到元组数组?

ios - 覆盖 shouldAutorotate 在 Swift 3 中不起作用

iphone - AudioQueueGetProperty(queueObject, kAudioQueueProperty_IsRunning, &status, &statusSize) 为状态返回垃圾

objective-c - 将数据从 watchKit 发送到 iPhone 并在不启动 iOS App 的情况下获得回调

objective-c - 这种形式的范围界定是如何命名的?

Swift3、XCode8、iOS10 的 Swifty JSON 性能下降