objective-c - 使用 SwiftyJSON 导出的 Swift 框架面临:由于未捕获的异常而终止应用程序
问题描述
我正在创建 Swift 框架来解析一些要在 Objective C 项目中使用的 JSON 数据并面临这个错误:
这是我在 Swift 中添加到 SwiftyJson 库的框架代码
import Foundation
@objc public class parse : NSObject {
public override init() {
}
var Api = "XXXXXXX"
@objc public func parseJSON(){
print("flag")
let requestURL: NSURL = NSURL(string: Api)!
let urlRequest: URLRequest = URLRequest(url: requestURL as URL)
let session = URLSession.shared
let task = session.dataTask(with: urlRequest as URLRequest) { (data, response, error) -> Void in
if data != nil {
do {
let readableJSON = try JSON(data: data!, options: JSONSerialization.ReadingOptions.mutableContainers)
let Name = readableJSON["data"]["buttonText"].stringValue as String!
let buttonTextColor = readableJSON["data"]["buttonTextColorCode"].stringValue as String!
let buttonBackgroundColorCode = readableJSON["data"]["buttonBackgroundColorCode"].stringValue as String!
let visibility = readableJSON["data"]["visibility"].boolValue
let indexURL = readableJSON["data"]["indexURL"].stringValue as String!
let authURL = readableJSON["data"]["authURL"].stringValue as String!
let module = readableJSON["data"]["module"].stringValue as String!
let alignment = readableJSON["data"]["alignment"].stringValue as String!
print("\(Name!) \n \(buttonTextColor!) \n \(buttonBackgroundColorCode!) \n \(indexURL!) \n \(alignment!)")
print("done")
print("Color value:\(buttonBackgroundColorCode!)")
} catch {
print(error)
}
}
}
task.resume()
}
}
这是我在 Objective C 中的项目:
#import "ViewController.h"
@import JSONFrameWork;
#import <JSONFrameWork/JSONFrameWork-Swift.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[[parse alloc]init];
[[parse alloc]parseJSON];
}
@end
当我运行代码得到以下错误时,我怀疑 SwiftyJSON 在 ObjetiveC 中运行不正常
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initWithString:relativeToURL:]: nil string parameter'
*** First throw call stack:
(......) libc++abi.dylib: terminating with uncaught exception of type NSException
注意:这个框架在 Swift 项目中运行良好,这里是来自 API 的 JSON 响应:
{
"data":{
"buttonText":"\u067e\u06cc\u0634 \u0628\u06cc\u0646\u06cc \u06a9\u0646!",
"buttonTextColorCode":"#000000",
"buttonBackgroundColorCode":"#7ca2d246",
"visibility":true,
"indexURL":"XXXXXX",
"authURL":"XXXXX",
"module":"MATCH_PREDICTION",
"alignment":"RIGHT_TOP",
"marginTop":"10",
"marginLeft":"10",
"marginRight":"10",
"marginBottom":"10",
"allowChannels":[
"22",
"52",
"10"
]
},
"success":true
}
解决方案
推荐阅读
- swift - 如何从 tableView 单元格中显示的标签打印 .text?
- r - 使用 Shiny 和 Flexdashboard 创建相互依赖的输入
- perl - 如何在匹配之前和之后替换字符
- three.js - THREE.js 无法导入模块
- c++ - 为什么 memory_order_release 支持直到 C++20?
- python - seleniumpython 下拉列表 div
- angular - Angular HttpClient 不发送 gettter 提供的属性
- php - 维护模式 - 使用 IP 以外的其他方式进行授权
- kubernetes - 如何在 Kubernetes 中使用服务 IP 地址而不是 POD IP 地址
- reactjs - 如何在 React 中显示存储在变量中的组件