Я создаю Swift Framework для анализа некоторых данных JSON, которые будут использоваться в проекте Objective C, и сталкиваюсь с этой ошибкой:
вот мой каркасный код в 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()
}
}
и вот мой проект в Цели 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, а вот ответ JSON от API:
{
"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
}