【发布时间】:2014-08-26 13:13:48
【问题描述】:
我必须将以下几行 Objective-c 代码翻译成 swift。这是来自 Objective-c JSONModel-Framework 的示例,其中框架提供的Optional 协议应用于NSString 类型的实例变量。我找到了related post,但我没有成功。使用我的MYModel.swift 实现 Xcode 抱怨Cannot specialize non-generic type NSString
感谢您的帮助!
MYModel.swift
@objc(MYModel) public class MYModel : JSONModel {
...
public var name : NSString<Optional>
...
}
MYModel.h
@interface MYModel : JSONModel
...
@property (strong, nonatomic) NSString<Optional>* name;
...
...
/**
* 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
...
【问题讨论】:
-
您在翻译时遇到了什么问题?
-
@Antonio:更新描述
-
你可能会遇到问题。 Swift 在语言级别已经有了可选变量,非可选变量必须在实例化期间始终初始化。但除此之外,我认为您使用的 JSON 框架使用反射/自省来填充实例,这在 swift 中不会起作用
-
谢谢安东尼奥。 JSONModel 框架实际上与 swift 一起工作,只要你为你的 swift 类实例变量使用 Objective-c 类型并用 @objc(MYModel) 注释类
-
是的,没错,但是使 objc 自动兼容意味着您不能使用 swift 特定的功能 - 例如泛型。只要你没问题...
标签: ios objective-c swift jsonmodel