我正在尝试将 RestKit 与 Realm.io 结合使用,但遇到了属性数据类型方面的问题。我有一个整数属性。 RestKit 似乎只想映射到 NSNumber
类型(https://github.com/RestKit/RestKit/wiki/Object-mapping),而 realm 对象只允许原始属性(Int
、Float
、Double
等 ( 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...'
但是如果我使用原始数据类型来使 Realm 快乐,我会从 RestKit 收到一个'key value coding-compliant'
错误。
这是最糟糕的。
我已经尝试向该属性添加一个 RestKit 值转换器,我想也许我可以在需要进行 rest 调用时在数据类型之间来回切换。但是这个策略正在成为它自己的一个 stackoverflow 问题。
这实际上是最糟糕的。
有人做过吗?我是否正在使用值(value)转换器?提前致谢!
最佳答案
让 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()
}
}
它输出了 “错误 92:需要 SSL”
的描述,这意味着代码 (Int
) 和消息 (String
) 正在被正确解析。
关于ios - 一起使用 Realm.io 和 RestKit 时的属性数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26856273/