Hi, does anyone know how could i represent the following type TypeA<TypeB> as a parameter of a func, if it's even possible, when declaring that func as @objc ?
- Here is the signature of the func
@objc func someFunctions(
someString: String?,
success: @escaping (_ response: TypeA<TypeB>) -> Void,
failure: @escaping (_ error: NSError, _ messageError: String) -> Void
) { .... }
- And here the declaration insde the TypeA class which maybe it's the cause of the problem
class TypeA<T: Codable>: Codable {
var list: [T]?
var links: TypeC?
var meta: TypeD?
enum CodingKeys: String, CodingKey {
.....
}
- It gives me the following error referring to the 2° parameter which is
TypeA<TypeB> of someFunctions
Method cannot be marked @objc because the type of the parameter 2 cannot be represented in Objective-C
tera
2
the relevant parameter type must also be marked @objc.
you may try success: @escaping (_ response: Any) -> Void, with the corresponding typecasts.
1 Like
You mean i should mark @objc both TypeA and TypeB and every other type which is inside them? becuase i don't think i am able to add the @objc keyword to every type contained in TypeA and TypeB because not all type could be represented from Swift to Objc.
Regarding the Any solution, I think i have partially solve it meaning i will use Any as a result type and then when calling in Objc i will return only a single type like an array of type [TypeB] while when calling this API from swift i will use the original type TypeA<TypeB>.
To have a complete solution maybe i should implement generics on Objc side response or in some way cast the Any from Swift (id received in Objc) as TypeA<TypeB> but currently i am not able to do this.
tera
4
you want the method to be marked @objc to be able calling it from objc with a parameter that objc can't express?
if you make it a simple minimal app (e.g. a git repo) would be easier to understand what you are after and then i or others can help.
you want the method to be marked @objc to be able calling it from objc with a parameter that objc can't express?
Yes that is my intention. From what i have read i should be able to use directly in Objc (or cast it from Any) the type TypeA<TypeB> as long as the types inside both type TypeA and TypeB could be represented in Objc. Am i right about this assumption or not?