0

新しい RubyMotion プロジェクトをセットアップし、いくつかの JSON をプレーンな Ruby オブジェクトに正常にマップしました。属性の 1 つを日付にしたいのですが、RestKit で変換を行う方法がわかりません。

日付フォーマッタを設定する方法は知っていますが、RestKit は日付フォーマッタを適用する属性をどのように認識しますか? これがObjective-Cで行われると、データ型が推測されると思います。とにかくルビーでこれを達成する方法はありますか?

モデル:

def SampleModel
  attr_accessor :id, :name, :created_at
end

マッピング:

def sample_mapping
  @sample_mapping ||= begin
    mapping = RKObjectMapping.mappingForClass(SampleModel)
    mapping.addAttributeMappingsFromArray(["id", "name", "created_at"])
  end
end
4

2 に答える 2

0

私は潜在的な回避策を思いついたと思います。動作しますが、優れたソリューションとは言えません。

Mixing Objective-C and Rubyに関する Clay Allsopp の記事に基づいて、vendor/models にモデル クラスの Objective-C バージョンを作成し、そこに NSDate 属性を指定しました。モデルの Ruby バージョンはまだ存在するため、残りのモデル コードは Ruby のままです。NSDate 属性を取得するために継承を使用する必要さえありません。ruby モデル クラスは単にクラスを「再度開き」、追加の属性と動作を追加します。

コード

ベンダー/モデル/SampleModel.h

#import <UIKit/UIKit.h>

@interface SampleModel : NSObject

  @property (nonatomic, retain) NSDate * created_at;

@end

ベンダー/モデル/SampleModel.m

#import "SampleModel.h"

@implementation SampleModel

  @synthesize created_at;

@end

レーキファイル

# -*- coding: utf-8 -*-
$:.unshift("/Library/RubyMotion/lib")
require 'motion/project/template/ios'
...

Motion::Project::App.setup do |app|
  ...
  app.vendor_project('vendor/models', :static)
end

models/sample_model.rb

class SampleModel
  attr_accessor :id, :name
end

誰かがより良い解決策を持っているなら、私はそれを聞きたいです!

ありがとう。

于 2013-08-14T08:47:39.347 に答える
0

値がマップされているプロパティがNSDateRestKitの場合、読み取り時に、設定されたデータフォーマッタのいずれかがnil以外の日付オブジェクトを返すまで、JSONに設定された各データフォーマッタを適用します。のみをシリアル化する場合preferredDateFormatter、日付から文字列を生成するために使用されます。

于 2013-08-13T13:06:39.153 に答える