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

Posted

技术标签:

【中文标题】一起使用 Realm.io 和 RestKit 时的属性数据类型【英文标题】:Property data types while using Realm.io and RestKit together 【发布时间】:2014-11-11 01:59:28 【问题描述】:

我正在尝试将 RestKit 与 Realm.io 一起使用,但遇到了属性数据类型的问题。我有一个整数属性。 RestKit 似乎只想映射到NSNumber 类型(https://github.com/RestKit/RestKit/wiki/Object-mapping),而领域对象只允许原始属性(IntFloatDouble 等(http://realm.io/docs/cocoa/0.87.4/#property-types))。

我看到其他迹象表明这两个框架可以一起使用 (Can i use RestKit and Realm.io),但我不确定如何解决这个问题。

例如,如果我使用NSNumber 数据类型,RLMObject 将失败并给出错误

'RLMException', reason: ''NSNumber' is not supported as an RLMObject property...'

但是,如果我使用原始数据类型来使领域快乐,我会从 RestKit 收到 'key value coding-compliant' 错误。

这是最糟糕的。

我尝试向属性添加一个 RestKit 值转换器,我想也许我可以在需要进行休息调用时在数据类型之间来回切换。但是该策略正在成为其自身的 *** 问题。

实际上是最糟糕的。

有人做过吗?我是否对价值转换器有所了解?提前致谢!

【问题讨论】:

能否请您发布您的 RLMObject 模型?我对带有原始属性的 RestKit 和 Realm 没有任何问题。虽然我在 objc 中,但我刚刚看到你在 Swift 中遇到了这个问题。我下次试试。 【参考方案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)都被正确解析了。

【讨论】:

谢谢@jpsim - 你知道一旦实例化它最终是什么数据类型吗?因为如果我尝试显式声明类型,则会出现错误,但您拥有的代码似乎也适用于我。再次感谢。 代码属性是Int,在将属性定义为dynamic var code: Int = 0时仍然有效

以上是关于一起使用 Realm.io 和 RestKit 时的属性数据类型的主要内容,如果未能解决你的问题,请参考以下文章

让 RestKit 与 CococaPods 1.x 一起工作

将 MagicalRecord 与 RestKit 中的另一个现有上下文一起使用

RestKit 删除语义

将 RestKit 与本地服务器一起使用

从realm.io中读取并添加到listview

java Android:使用Realm.io数据库的AutoCompleteTextView