我试图在我的基于Swift的项目中使用RestKit.我似乎无法使用Swift原始数据类型,如Int,Double,Bool等,除了String,Array和Dictionaries(可能是因为它们是免费的桥接到NSString, NSArray和NSDictionary)
使用objective-c,我可以将对象中的属性定义为作为属性的基本数据类型,这些属性已分配.在Swift中,我只能使用对象(String,NSNumber,Array,Dictionary),否则应用程序会崩溃"setValue:forUndefinedKey:此类与密钥aBool不符合密钥值编码".
示例:这是我的对象在Objective-C中的样子:
@interface TestObject : NSObject
@property (strong, nonatomic) NSString *aString;
@property (assign, nonatomic) BOOL aBool;
@property (assign, nonatomic) CGFloat aFloat;
@end
Run Code Online (Sandbox Code Playgroud)
和Swift中的"等价物":
class TestObject:NSObject {
var aString:NSString?
var aBool:Bool?
var aFloat:Double?
}
Run Code Online (Sandbox Code Playgroud)
崩溃,虽然我明白为什么它会崩溃,我想知道,是否有另一种解决方法,而不是使用NSNumber for Booleans,Integers和Floats,就像它在Objective-C中一样?
(如果任何RestKit开发人员正在阅读此内容:首先感谢您的工作,然后:是否有关于Swift支持/端口到Swift的计划?)
小智 8
我在Swift做了一个应用程序,我们在2014年夏天开始工作,当时Swift很新.我开始使用RestKit来处理与服务器的REST通信,我花了至少整整一个月的时间来配置RestKit供我使用.
虽然我不知道你的用例,但我发现使用Alamofire和SwiftyJSON更容易.它节省了我很多时间.这也意味着我手动执行从动态类型到我的实体对象中的类型的转换,但是花在这上面的时间远远少于我以前花在尝试配置RestKit上的时间.
如果这对您来说不可行,您可能需要查看RestKit中可用的RKValueTransformer类; 在您的RKObjectMapping中,您可以为各个属性指定自己的变换器.但同样,我认为花在Alamofire和SwiftyJSON上的时间会更好.毕竟,它们是原生的Swift库.
| 归档时间: |
|
| 查看次数: |
1487 次 |
| 最近记录: |