我收到一条错误说明:使用以下实现时,在'DataManager'类型的对象上找不到属性'clientChatLoad':
#import "IOS_Project_Name-Swift.h"
@class DataManager;
...
DataManager.clientChatLoad(0){ data, error in
guard data != nil else {
print(error)
return
}
guard let data = data else { return }
let json = JSON(data: data)
if let result = json["success"].bool{
if (result){
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(0.5 * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) { () -> Void in
NSNotificationCenter.defaultCenter().postNotificationName("refreshChatDetails", object: nil, userInfo:nil)
}
}
}
...
@objc class func clientChatLoad(_ chatId: Int, completionHandler: @escaping (Data?, NSError?) -> ()) -> URLSessionTask {
// AJ TO-DO
var defaults = UserDefaults.standard
let URL = Foundation.URL(string: chatUrl)!
var request = URLRequest(url: URL, cachePolicy: .reloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 3.0)
request.httpMethod = "POST"
...
据我所知,在@class DataManager
之前将@objc
添加到我的Objective C类以及class func clientChatLoad
应该将Swift代码暴露给我的Objective C类...但我仍然收到错误。我可能忽略了什么?
答案 0 :(得分:2)
起初我认为你的代码只是某种错误印刷,但在评论的讨论过程中,我逐渐意识到它是真实的,并且你试图将 Swift代码放入一个目标 - C文件(即 AppDelegate.m )。你不能这样做! Objective-C文件必须完全用Objective-C编写!
我会怀疑你是否真的需要一个混合应用程序(一个用两种语言编写的应用程序)。如果您只选择一种语言并用该语言编写整个应用程序,那么您的生活将变得更加简单。但是如果你 将要有一个混合应用程序,你需要学习Objective-C并在 Objective-C中编写Objective-C 。
答案 1 :(得分:1)
确保您的DataManager类继承自NSObject。你应该很好。