我正在尝试将RestKit与Realm.io一起使用,并且我遇到了属性数据类型的问题。我有一个整数属性。 RestKit似乎只想映射到NSNumber
类型(https://github.com/RestKit/RestKit/wiki/Object-mapping),而领域对象只允许属性为基元(Int
,Float
,{{1} }等,(http://realm.io/docs/cocoa/0.87.4/#property-types))。
我已经看到其他迹象表明这两个框架可以一起使用(Can i use RestKit and Realm.io),但我不确定如何解决这个问题。
例如,如果我使用Double
数据类型,NSNumber
将失败并提供错误
RLMObject
但是如果我使用原始数据类型让领域变得高兴,我会从RestKit中得到'RLMException', reason: ''NSNumber' is not supported as an RLMObject property...'
错误。
这是最糟糕的。
我尝试在属性中添加一个RestKit值转换器,认为每当需要进行其余调用时,我可以在数据类型之间来回切换。但是,这种策略是它自己的堆栈溢出问题的方法。
实际上是最糟糕的。
有人这样做过吗?我是否使用价值变换器?提前谢谢!
答案 0 :(得分:1)
我没有任何问题让RestKit在Swift中使用原始数字类型。这是我的代码:
class TwitterError: RLMObject {
dynamic var message = ""
dynamic var code = 0
override var description: String { return "Error \(code): \(message)" }
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let mapping = RKObjectMapping(forClass: TwitterError.self)
mapping.addAttributeMappingsFromDictionary(["message": "message", "code": "code"])
let responseDescriptor = RKResponseDescriptor(mapping: mapping, pathPattern: nil, keyPath: "errors", statusCodes: nil)
let url = NSURL(string: "http://api.twitter.com/1/statuses/public_timeline.json")
let request = NSURLRequest(URL: url!)
let operation = RKObjectRequestOperation(request: request, responseDescriptors: [responseDescriptor])
operation.setCompletionBlockWithSuccess(nil, failure: nil)
operation.start()
}
}
输出"Error 92: SSL is required"
的描述,这意味着正在正确解析代码(Int
)和消息(String
)。