rob*_*ble 5 objective-c ios jsonmodel swift
我必须将以下几行Objective-c代码翻译成swift.这是来自Objective-c JSONModel-Framework的示例,其中FrameworkOptional提供的协议应用于类型的实例变量NSString.我发现了一个相关的帖子,但我没有设法实现它.随着我的MYModel.swift实现Xcode抱怨Cannot specialize non-generic type NSString
谢谢你的帮助!
MYModel.swift
@objc(MYModel) public class MYModel : JSONModel {
...
public var name : NSString<Optional>
...
}
Run Code Online (Sandbox Code Playgroud)
MYModel.h
@interface MYModel : JSONModel
...
@property (strong, nonatomic) NSString<Optional>* name;
...
Run Code Online (Sandbox Code Playgroud)
...
/**
* Protocol for defining optional properties in a JSON Model class. Use like below to define
* model properties that are not required to have values in the JSON input:
*
* @property (strong, nonatomic) NSString<Optional>* propertyName;
*
*/
@protocol Optional
@end
...
Run Code Online (Sandbox Code Playgroud)
和不代表符合协议<。它适用于具有泛型(如数组)的类型:>
Array<T>
Run Code Online (Sandbox Code Playgroud)
所以你可以写var a: Array<String>。
你想要别的东西,变量应该是类型String 并且符合协议
您可以使用协议扩展 String 并自行添加所需的函数。
由于您的Optional协议是空的,因此编写以下内容就足够了:
extension NSString: Optional {} // you can use String if you like
Run Code Online (Sandbox Code Playgroud)
要创建协议,请使用 Swift 编写:
protocol Optional {}
Run Code Online (Sandbox Code Playgroud)
您也可以使用 Objective-C 创建协议。
你不应该使用Optional,因为已经有一个,但是因为Swift有命名空间,所以它可以工作。你当然可以写这样的东西:
extension NSString: JsonOptProtocol {}
protocol JsonOptProtocol {} // or create that in Objective-C like you did
Run Code Online (Sandbox Code Playgroud)