简体   繁体   English

将NSJSONSerialization从Swift转换为Objc C

[英]Converting NSJSONSerialization from Swift to Objc C

I am trying to convert a swift code to Objective C , since swift handles error by itself, I am little confuse about converting here, this is swift code : 我正在尝试将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)
    }
}

and here is Objective C code 这是Objective C代码

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

    NSError *error = nil;

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

}

In swift code there is code main_data = NSMutableData() delegate!.connectionDidFinish(self.identifier) how can I convert this part to objective c ? 在快速代码中,代码main_data = NSMutableData() delegate!.connectionDidFinish(self.identifier)如何将这部分转换为目标c? I am not familiar with swift. 我不熟悉迅速。 Thanks for your help 谢谢你的帮助

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

also

delegate!.connectionDidFinish(self.identifier)

will crash if connectionDidFinish not implemented for delegate object (same with my objective-c code). 如果未为委托对象实现connectionDidFinish (与我的Objective-C代码相同),将崩溃。 To fix crash you need change the Swift implementation to 要修复崩溃,您需要将Swift实现更改为

delegate?.connectionDidFinish(self.identifier)

and for objective-c: 对于目标-c:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM