【发布时间】:2015-04-27 06:41:35
【问题描述】:
我正在尝试在基于 Swift 的项目中使用 RestKit。 我似乎无法使用 Swift 原始数据类型,如 Int、Double、Bool 等,但 String、Array 和 Dictionaries 除外(这可能是因为它们是免费桥接到 NSString 的, NSArray 和 NSDictionary)
使用objective-c,我可以将对象中的属性定义为原始数据类型作为属性,这些属性是被分配的。在 Swift 中,我只能使用对象(String、NSNumber、Array、Dictionary),否则应用程序会因“setValue:forUndefinedKey: this class is not key value coding-compliant for key aBool”而崩溃。
示例: 这是我的对象在 Objective-C 中的样子:
@interface TestObject : NSObject
@property (strong, nonatomic) NSString *aString;
@property (assign, nonatomic) BOOL aBool;
@property (assign, nonatomic) CGFloat aFloat;
@end
以及 Swift 中的“等价物”:
class TestObject:NSObject {
var aString:NSString?
var aBool:Bool?
var aFloat:Double?
}
这会崩溃,虽然我确实理解它为什么会崩溃,但我想知道,是否有另一种解决方法,而不是使用 NSNumber 处理布尔值、整数和浮点数,就像它在 Objective-C 中的工作方式一样?
(如果有任何 RestKit 开发人员正在阅读此内容:首先感谢您的工作,然后:是否有任何关于 Swift 支持/移植到 Swift 的计划?)
【问题讨论】:
-
您应该显示完整的异常消息和堆栈跟踪。这也可以作为 github 上的一个问题更好地提出。