同时使用Realm.io和RestKit时的属性数据类型

时间:2014-11-11 01:59:28

标签: ios swift restkit restkit-0.20 realm

我正在尝试将RestKit与Realm.io一起使用,并且我遇到了属性数据类型的问题。我有一个整数属性。 RestKit似乎只想映射到NSNumber类型(https://github.com/RestKit/RestKit/wiki/Object-mapping),而领域对象只允许属性为基元(IntFloat,{{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值转换器,认为每当需要进行其余调用时,我可以在数据类型之间来回切换。但是,这种策略是它自己的堆栈溢出问题的方法。

实际上是最糟糕的。

有人这样做过吗?我是否使用价值变换器?提前谢谢!

1 个答案:

答案 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)。