Enviar búsqueda
Cargar
SansanのEightアプリでRealmを導入した件
•
4 recomendaciones
•
2,216 vistas
今城 善矩
Seguir
Realm meetup #3で話したスライドです
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 38
Descargar ahora
Descargar para leer sin conexión
Recomendados
AWA with Realm
AWA with Realm
Yuji Hato
AlexaPepperTalk
AlexaPepperTalk
ssuser831037
Oculus RiftとLEAP Motionでゲームを作ってみて
Oculus RiftとLEAP Motionでゲームを作ってみて
Haruto Watanabe
ホットペッパービューティーアプリリプレイスとMVCP
ホットペッパービューティーアプリリプレイスとMVCP
Recruit Lifestyle Co., Ltd.
組込み向けRuby処理系mrubyの可能性
組込み向けRuby処理系mrubyの可能性
Salesforce Developers Japan
マルチデバイスに対応するためのAuto layout
マルチデバイスに対応するためのAuto layout
asakahara
Animated APIを使ってスクロールで隠れる“あのバー”を作る
Animated APIを使ってスクロールで隠れる“あのバー”を作る
ssusercb6609
Jslug勉強会 awsと比較するネットワーク
Jslug勉強会 awsと比較するネットワーク
Hideaki Tokida
Recomendados
AWA with Realm
AWA with Realm
Yuji Hato
AlexaPepperTalk
AlexaPepperTalk
ssuser831037
Oculus RiftとLEAP Motionでゲームを作ってみて
Oculus RiftとLEAP Motionでゲームを作ってみて
Haruto Watanabe
ホットペッパービューティーアプリリプレイスとMVCP
ホットペッパービューティーアプリリプレイスとMVCP
Recruit Lifestyle Co., Ltd.
組込み向けRuby処理系mrubyの可能性
組込み向けRuby処理系mrubyの可能性
Salesforce Developers Japan
マルチデバイスに対応するためのAuto layout
マルチデバイスに対応するためのAuto layout
asakahara
Animated APIを使ってスクロールで隠れる“あのバー”を作る
Animated APIを使ってスクロールで隠れる“あのバー”を作る
ssusercb6609
Jslug勉強会 awsと比較するネットワーク
Jslug勉強会 awsと比較するネットワーク
Hideaki Tokida
Swift instagram viewer
Swift instagram viewer
Shintaro Kaneko
デザイナさんにGithubでpr投げてもらうまで
デザイナさんにGithubでpr投げてもらうまで
Hideharu Okuma
タイムカード打刻チャットボット「ごえもん」誕生話
タイムカード打刻チャットボット「ごえもん」誕生話
典子 松本
AWS Startup Tech Lightning Talks 2015 Summer at dots.
AWS Startup Tech Lightning Talks 2015 Summer at dots.
Eiji Shinohara
Tokyoex6 EEx
Tokyoex6 EEx
Tsunenori Oohara
hello waf, hello phoenix
hello waf, hello phoenix
Tsunenori Oohara
React way at_eight
React way at_eight
Hideharu Okuma
こすもすえび&しばやんの「Azureアンカンファレンス~Azureについては俺たちに聞け(ばええやろ)」
こすもすえび&しばやんの「Azureアンカンファレンス~Azureについては俺たちに聞け(ばええやろ)」
Keiji Kamebuchi
ウィングアーク1st 早朝社内勉強会 | SORACOM Funnel Partner Hosted Adapter 誕生の裏側 ~ Slack活用方法~
ウィングアーク1st 早朝社内勉強会 | SORACOM Funnel Partner Hosted Adapter 誕生の裏側 ~ Slack活用方法~
SORACOM,INC
Eightにおけるエンジニア主導の取り組み
Eightにおけるエンジニア主導の取り組み
Sansan
ハードウェア初心者のwebエンジニアがIoT製作に取り組んだ話
ハードウェア初心者のwebエンジニアがIoT製作に取り組んだ話
Haruki Hinode
Eight meets Realm
Eight meets Realm
Kazuhiro Sakamoto
Rails環境に最適なVue.js構成を探る
Rails環境に最適なVue.js構成を探る
虎の穴 開発室
スマホ版ログレスにポストエフェクトシステムを導入した話
スマホ版ログレスにポストエフェクトシステムを導入した話
章暢 藤井
ある工場の情シス
ある工場の情シス
Kohei Nakamura
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
健一 辰濱
Jawsfeta tohoku lt_20140906
Jawsfeta tohoku lt_20140906
Takayuki Niinuma
元インフラエンジニアが Scalaを触ってつまづいたところ。
元インフラエンジニアが Scalaを触ってつまづいたところ。
takako onoue
データサイエンティスト養成読本の解説+書き忘れたこと
データサイエンティスト養成読本の解説+書き忘れたこと
Tokoroten Nakayama
前任者から引き継いだ Eight Android アプリ内部の改善
前任者から引き継いだ Eight Android アプリ内部の改善
健一 辰濱
インドのインターネット環境との戦い方
インドのインターネット環境との戦い方
健一 辰濱
初めてつくる Webアプリの開発戦略
初めてつくる Webアプリの開発戦略
Masato Koishi
Más contenido relacionado
La actualidad más candente
Swift instagram viewer
Swift instagram viewer
Shintaro Kaneko
デザイナさんにGithubでpr投げてもらうまで
デザイナさんにGithubでpr投げてもらうまで
Hideharu Okuma
タイムカード打刻チャットボット「ごえもん」誕生話
タイムカード打刻チャットボット「ごえもん」誕生話
典子 松本
AWS Startup Tech Lightning Talks 2015 Summer at dots.
AWS Startup Tech Lightning Talks 2015 Summer at dots.
Eiji Shinohara
Tokyoex6 EEx
Tokyoex6 EEx
Tsunenori Oohara
hello waf, hello phoenix
hello waf, hello phoenix
Tsunenori Oohara
React way at_eight
React way at_eight
Hideharu Okuma
こすもすえび&しばやんの「Azureアンカンファレンス~Azureについては俺たちに聞け(ばええやろ)」
こすもすえび&しばやんの「Azureアンカンファレンス~Azureについては俺たちに聞け(ばええやろ)」
Keiji Kamebuchi
La actualidad más candente
(8)
Swift instagram viewer
Swift instagram viewer
デザイナさんにGithubでpr投げてもらうまで
デザイナさんにGithubでpr投げてもらうまで
タイムカード打刻チャットボット「ごえもん」誕生話
タイムカード打刻チャットボット「ごえもん」誕生話
AWS Startup Tech Lightning Talks 2015 Summer at dots.
AWS Startup Tech Lightning Talks 2015 Summer at dots.
Tokyoex6 EEx
Tokyoex6 EEx
hello waf, hello phoenix
hello waf, hello phoenix
React way at_eight
React way at_eight
こすもすえび&しばやんの「Azureアンカンファレンス~Azureについては俺たちに聞け(ばええやろ)」
こすもすえび&しばやんの「Azureアンカンファレンス~Azureについては俺たちに聞け(ばええやろ)」
Similar a SansanのEightアプリでRealmを導入した件
ウィングアーク1st 早朝社内勉強会 | SORACOM Funnel Partner Hosted Adapter 誕生の裏側 ~ Slack活用方法~
ウィングアーク1st 早朝社内勉強会 | SORACOM Funnel Partner Hosted Adapter 誕生の裏側 ~ Slack活用方法~
SORACOM,INC
Eightにおけるエンジニア主導の取り組み
Eightにおけるエンジニア主導の取り組み
Sansan
ハードウェア初心者のwebエンジニアがIoT製作に取り組んだ話
ハードウェア初心者のwebエンジニアがIoT製作に取り組んだ話
Haruki Hinode
Eight meets Realm
Eight meets Realm
Kazuhiro Sakamoto
Rails環境に最適なVue.js構成を探る
Rails環境に最適なVue.js構成を探る
虎の穴 開発室
スマホ版ログレスにポストエフェクトシステムを導入した話
スマホ版ログレスにポストエフェクトシステムを導入した話
章暢 藤井
ある工場の情シス
ある工場の情シス
Kohei Nakamura
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
健一 辰濱
Jawsfeta tohoku lt_20140906
Jawsfeta tohoku lt_20140906
Takayuki Niinuma
元インフラエンジニアが Scalaを触ってつまづいたところ。
元インフラエンジニアが Scalaを触ってつまづいたところ。
takako onoue
データサイエンティスト養成読本の解説+書き忘れたこと
データサイエンティスト養成読本の解説+書き忘れたこと
Tokoroten Nakayama
前任者から引き継いだ Eight Android アプリ内部の改善
前任者から引き継いだ Eight Android アプリ内部の改善
健一 辰濱
インドのインターネット環境との戦い方
インドのインターネット環境との戦い方
健一 辰濱
初めてつくる Webアプリの開発戦略
初めてつくる Webアプリの開発戦略
Masato Koishi
コードはナマモノ 腐らせないために今までやってきたこと
コードはナマモノ 腐らせないために今までやってきたこと
Kazuhiro Oinuma
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾
Ryutaro YOSHIBA
Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介
健一 辰濱
マイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャ
ota42y
Developers.IO 2017 | SORACOMの「便利さが伝わりにくいサービス」ランキング!!
Developers.IO 2017 | SORACOMの「便利さが伝わりにくいサービス」ランキング!!
SORACOM,INC
Atnd地域検索作ったよー
Atnd地域検索作ったよー
Ohishi Mikage
Similar a SansanのEightアプリでRealmを導入した件
(20)
ウィングアーク1st 早朝社内勉強会 | SORACOM Funnel Partner Hosted Adapter 誕生の裏側 ~ Slack活用方法~
ウィングアーク1st 早朝社内勉強会 | SORACOM Funnel Partner Hosted Adapter 誕生の裏側 ~ Slack活用方法~
Eightにおけるエンジニア主導の取り組み
Eightにおけるエンジニア主導の取り組み
ハードウェア初心者のwebエンジニアがIoT製作に取り組んだ話
ハードウェア初心者のwebエンジニアがIoT製作に取り組んだ話
Eight meets Realm
Eight meets Realm
Rails環境に最適なVue.js構成を探る
Rails環境に最適なVue.js構成を探る
スマホ版ログレスにポストエフェクトシステムを導入した話
スマホ版ログレスにポストエフェクトシステムを導入した話
ある工場の情シス
ある工場の情シス
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
Jawsfeta tohoku lt_20140906
Jawsfeta tohoku lt_20140906
元インフラエンジニアが Scalaを触ってつまづいたところ。
元インフラエンジニアが Scalaを触ってつまづいたところ。
データサイエンティスト養成読本の解説+書き忘れたこと
データサイエンティスト養成読本の解説+書き忘れたこと
前任者から引き継いだ Eight Android アプリ内部の改善
前任者から引き継いだ Eight Android アプリ内部の改善
インドのインターネット環境との戦い方
インドのインターネット環境との戦い方
初めてつくる Webアプリの開発戦略
初めてつくる Webアプリの開発戦略
コードはナマモノ 腐らせないために今までやってきたこと
コードはナマモノ 腐らせないために今までやってきたこと
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾
Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介
マイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャ
Developers.IO 2017 | SORACOMの「便利さが伝わりにくいサービス」ランキング!!
Developers.IO 2017 | SORACOMの「便利さが伝わりにくいサービス」ランキング!!
Atnd地域検索作ったよー
Atnd地域検索作ったよー
Más de 今城 善矩
HealthKitで日別のデータを一度に取得する
HealthKitで日別のデータを一度に取得する
今城 善矩
Stargazer Meetup1
Stargazer Meetup1
今城 善矩
とにかく明るいCore Spotlight
とにかく明るいCore Spotlight
今城 善矩
BaseViewControllerは作りたくない
BaseViewControllerは作りたくない
今城 善矩
まだSwiftで消耗してるの?
まだSwiftで消耗してるの?
今城 善矩
小学生でも分かった気になるiOS8のSize Class
小学生でも分かった気になるiOS8のSize Class
今城 善矩
iOSアプリ開発の現場で訊いてきたtips
iOSアプリ開発の現場で訊いてきたtips
今城 善矩
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
今城 善矩
WebApiを利用する際のOptional Bindingやクロージャを駆使したSwiftらしいコードの書き方
WebApiを利用する際のOptional Bindingやクロージャを駆使したSwiftらしいコードの書き方
今城 善矩
やはりお前らのCore Dataの使い方も間違っている
やはりお前らのCore Dataの使い方も間違っている
今城 善矩
OHHTTPStubsを使ったiOSアプリ開発
OHHTTPStubsを使ったiOSアプリ開発
今城 善矩
ジョブズも成仏するTips考えたったwww
ジョブズも成仏するTips考えたったwww
今城 善矩
やはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っている
今城 善矩
Más de 今城 善矩
(13)
HealthKitで日別のデータを一度に取得する
HealthKitで日別のデータを一度に取得する
Stargazer Meetup1
Stargazer Meetup1
とにかく明るいCore Spotlight
とにかく明るいCore Spotlight
BaseViewControllerは作りたくない
BaseViewControllerは作りたくない
まだSwiftで消耗してるの?
まだSwiftで消耗してるの?
小学生でも分かった気になるiOS8のSize Class
小学生でも分かった気になるiOS8のSize Class
iOSアプリ開発の現場で訊いてきたtips
iOSアプリ開発の現場で訊いてきたtips
Swiftだめ自慢Beta5
Swiftだめ自慢Beta5
WebApiを利用する際のOptional Bindingやクロージャを駆使したSwiftらしいコードの書き方
WebApiを利用する際のOptional Bindingやクロージャを駆使したSwiftらしいコードの書き方
やはりお前らのCore Dataの使い方も間違っている
やはりお前らのCore Dataの使い方も間違っている
OHHTTPStubsを使ったiOSアプリ開発
OHHTTPStubsを使ったiOSアプリ開発
ジョブズも成仏するTips考えたったwww
ジョブズも成仏するTips考えたったwww
やはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っている
Último
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Último
(11)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
SansanのEightアプリでRealmを導入した件
1.
Sansanの Eightアプリ でRealmを導入した件 Realm meetup
#3 @yimajo(今城 善矩) 2015.5.21
2.
自己紹介 • 株式会社キュリオシティソフトウェア • Sansan社のEight事業部で非常駐的に開発業務 を委託されている •
Realm対応などを担当した • 木曜日午後に打ち合わせに来てる
3.
Realm導入について実践的な 話をしようと思いますが Eight iOSアプリの背景を 話しつつ進めていきます https://8card.net/
4.
目次 • はじめに Realm導入の背景…5分 • Realmをどの機能で使ったか…5分 •
なぜRealmを選んだか…5分 • Realmを導入してみての知見…10分
5.
はじめに
6.
Eight iOSアプリとは
7.
• Eight事業部は岸川さんや堤さん(@shu223)と いうiOS開発者とも契約している • 2人とも非常駐的に仕事をしている •
2人はたまにSansan社に来ることがある!
8.
先月4月はこんな感じ 岸川さんと堤さんが週替りで打ち合わせに来る!!!!
9.
どうやってる?
10.
masterブランチ developブランチ BLE対応ブランチ Realm対応ブランチ 細かなトピックブランチ ブランチ利用のイメージ
11.
岸川さんの役割的な場面
12.
Realmをどの機能で 使ったか
13.
• Eight iOSのお知らせ一覧 •
ユーザに色々な内容を運営か らお知らせするWeb APIがあ りそれをキャッシュする • この機能は比較的重要ではな い • 元々はplist形式で保存されて いた ※写真のデータはダミーです
14.
なぜRealmを使う?
15.
Eight(iOS)の永続的な データ保存について(before) • SQLite • 検索、並び替え、更新があ るデータに利用 •
plist • キャッシュ的な利用 • その他 • 撮影画像を直接特定のディ レクトリ下に連番で置く等 その他 4% plist 11% SQLite 85%
16.
PhoneGapで HTML5時代 (マルチプラットフォーム!!) ネイティブ化し 外注で開発時代 引き継いだコードで 内製化 歴史
17.
なぜRealmを使う? • 古い実装では、データがViewControllerでNSDictionary を扱うようなコードになってしまっている • これ以上オレオレO/Rマッパーを挟むのも技術的負債を 増やしかねない •
しっかりとしたO/Rマッパーが用意されてあれば使いた い • Android版Eight もありそちらで使いたいという声も大 きかった
18.
まず 影響度の少ない既存の機能の保存 部分からRealmに置き換え 調査を兼ねた方法を とることになった
19.
Realm導入に対する知見 Realm(cocoa) v0.90.6
20.
打順 守備 選手名 1
遊 サンプルコードが実践的なガイドになってるので読もう 2 二 RLMObjectサブクラスのプロパティ定義がカラムを示す 3 中 NSNull/nilで保存できない 4 一 NSStringはnilを保存するように見えて空文字を保存する 5 右 NSDate使いづらいのでNSStringで保存した 6 三 Realm+JSONが自動でISO8601形式の文字列をNSDateに してしまう 7 左 JSONExportのコードはnilを考慮していない 8 捕 RLMObjectのプロパティ属性は書かないほうが良い 9 投 NSIntegerじゃなくint64_tを使うべき時もある 開発時の最新であったRealm(cocoa) v0.90.6を使用。バージョンアップにより仕様も変わるため内容は鵜呑みにしないでください
21.
一部を抜粋して 説明します
22.
サンプルコードが実践的で重要
23.
• リファレンス読んだら次は公式サンプルコードを 絶対読もう • EightのアプリではTable
Viewのサンプルを参考 にした。最初これを読まずに嵌ったので読もう • 非同期でのデータ書き込み、書き込み完了通知、 表示についてよく分かる • https://github.com/realm/realm-cocoa/ tree/master/examples/ios/objc/TableView
24.
JSONExportのコードはnullを 意識していないので カスタマイズして使う
25.
JSONExportとは • JSONExportはJSONのファイルからクラスを定 義してくれるツール • マッピング用のメソッドのコードも生成して出 力してくれる https://github.com/Ahmed-Ali/JSONExport
26.
JSONExportとは https://github.com/Ahmed-Ali/JSONExport
27.
例 - (instancetype)initWithDictionary:(NSDictionary *)dictionary { if(dictionary
== nil || [dictionary isKindOfClass:[NSNull class]]){ return nil; } self = [super init]; if(![dictionary[@"id"] isKindOfClass:[NSNull class]]){ self.identifier = [dictionary[@"id"] integerValue]; } if(![dictionary[@"name"] isKindOfClass:[NSNull class]]){ self.name = dictionary[@"name"]; } return self; } ただdictionary[@ id ]がnilなら_identifierもnilになり例外が 起きるので、この条件自体もカスタマイズは必要になる
28.
Eightでは JSON+Exportで自動生成される コードを元に カスタマイズしていきました
29.
NSDateが使いづらいので NSStringで保存した
30.
EightはWebAPIでJSONを取 得し保存したい { "messages":[{ "message":{ "id":1, "status":0, "kind":201, "link":1, "announced_datetime":"2014-08-19T22:54:02+09:00", "datetime_from":"2014-08-19T22:54:02+09:00", datetime_to":null } }] } JSONで日時のデータがnullだったりする
31.
Realmでnil/NSNull保存 できない • 日付がないってどうやって表す? 下記が検討内容 1.
型はNSDateで、ダミー用の特定の日時が保存されてい たら日付なしと扱う 2. 型をdoubleにしてUNIX時間(since1970)もしくはApple 時間(sinceReferenceDate)を基準にし、0なら日付なし 3. 日付の項目がnullだというフラグの項目を別に持たせる 4. 型はNSStringで保存する
32.
NSDateで特定の値をnull相 当として入れる案 • その特定の値がnull相当だと決めるのが実装になってし まい非常にあと引く設計でダメだ • ドキュメントにその特定の値がnull相当だと書けばいい とかいうのも良くない •
(そもそも外部取得してる値なんだから何がくるか分か らないと思ったほうがいい) • 今回はこの方法はパス
33.
型をdoubleにして基準値を決 め差分を保存 • UNIX時間(since1970)もしくはApple時間 (sinceReferenceDate)の基準を使う • 保存されている値に対して基準が何かは誰が知っている? •
コードに書いてある or ドキュメントに書く • あんまりイケてないのでは… • 今回はこの方法はパス
34.
日付を保存する項目がnilであ るという項目を別に作る • しかたないがアリな方法 • ただしnil/NSNullが保存できるようになった場合 にその方法が残ると直したくなるしあまりイケ てないのでは… •
当然その方法で実装したくなる場面というのは あるが今回はパス
35.
NSStringで保存 • JSONから取得する日時は"2014-08- 19T22:54:02+09:00"のようにISO8601形式になって いる • これはそのまま文字列として保存し利用する際にNSDate にする •
NSStringは空文字@ という概念があるので日時がない ものは空文字として保存すれば利用時に判別できる • まあまあこれは良さそうなのでこれを選んだ
36.
まとめ
37.
• 既存のアプリでRealm対応する場合は • 比較的軽い機能から対応すると気軽 •
JSONExportなどのツールを使うと便利
38.
以上です
Descargar ahora