プログラミングガール

Developing a better me

RLMException:Can't mutate a persisted array outside of a write transaction

そのまんまなんですが

'RLMException', reason: 'Can't mutate a persisted array outside of a write transaction.'

上記エラーは Realm の writeトランザクション外でデータの追加や削除を行おうとした場合に発生します。

try! realm.write {
    // 追加・削除処理
}

ちゃんと囲ってあげようね。

Githubを使いやすくする:issue/pull requestに関するヒント

issueの一覧の下部に表示される Pro Tip! を集めてみました!

f:id:hana_ori:20160417151616p:plain

  • {{ 指定した日付 }}以内に更新された issue: updated:>{{ 指定した日付 }}

  • 自分が作成した issue: author:{{ username }}

  • 自分以外が作成した issue: -author:{{ username }}

  • issue 上で誰かをメンションする: @{{ username }}

  • 誰の担当でもない issue を表示: no:assignee

  • ラベルのついてない issue を表示: no:label

  • マイルストーンを無視した結果を表示する: no:milestone

  • g i を押すことで、issue一覧に戻る

  • g p を押すことで、pull request一覧に戻る

※日付の指定は 2016-04-13 のようにハイフンで区切る

Githubを使いやすくする:pull requestのテンプレート作成

1. テンプレートファイルの新規作成

新規ファイルの作成は以下の New file から行う。
f:id:hana_ori:20160416182305p:plain

2. pull request テンプレート設定

f:id:hana_ori:20160416185922p:plain

テンプレートの作成
  • 隠しフォルダにテンプレートを格納したい場合は、①のように .github/ とディレクトリを切ってその配下に PULL_REQUEST_TEMPLATE.md を作成
  • ルートディレクトリの見えるところに配置したい場合は、そのまま PULL_REQUEST_TEMPLATE.md

※②のファイル名は大文字小文字の区別がされません。

テンプレート内容記入

③のようにMarkdownで記入できます。
Fixes # . のように記入しておくと、issueの閉じ忘れを防げます!

テンプレート機能を導入してみて

とにかくプルリクエストと紐付けて issue を閉じたいのに、閉じ忘れることが多すぎて・・・。
それが解消できただけでも使ってよかったと思う機能です。

Githubを使いやすくする:issueのテンプレート作成

1. テンプレートファイルの新規作成

新規ファイルの作成は以下の New file から行う。
f:id:hana_ori:20160416182305p:plain

2. issue テンプレート設定

f:id:hana_ori:20160416184833p:plain

テンプレートの作成
  • 隠しフォルダにテンプレートを格納したい場合は、①のように .github/ とディレクトリを切ってその配下に ISSUE_TEMPLATE.md を作成
  • ルートディレクトリの見えるところに配置したい場合は、そのまま `ISSUE_TEMPLATE.md

※②のファイル名は大文字小文字の区別がされません。

テンプレート内容記入

③のようにMarkdownで記入できます。

テンプレート機能を導入してみて

チームで作業をする際、記入内容が明確になってissue内容の把握がしやすくなりました。
ぜひ使ってみてほしい機能です!

RealmのResults型をArrayに変換する

背景

「テーブルのセルを並び替えたい」と思った時、

let movedCard = cards[index]
cards.removeAtIndex(index)
cards.insert(movedCard, atIndex: destinationIndexPath.row)

といったように実装すればいいかな、と思ったのですが、
今回はデータの保存にRealmを使ってる影響でこの「cards」の値がResultsとなり、

  • removeAtIndex(index)
  • insert(movedCard, atIndex: destinationIndexPath.row)

が使えませんでした orz


Results型をArrayに変換したら幸せになれる

let array = Array(results)

こちらでResults型をArrayに変換できます。
こうなれば後はこっちのもの。

let realm = try! Realm()
let cards = Array(realm.objects(Card))
// 移動するcardを一時的に退避し、削除
let movedCard = cards[index]
cards.removeAtIndex(index)
// 移動先に先ほどの movedCardを差し込む
cards.insert(movedCard, atIndex: destinationIndexPath.row)

Rails Admin:アイコンをカスタマイズする

なにがしたい?

新しいアクションを追加したらその内容を表すiconを設置したいと思うのが人間というものかなと思います。
そこで、自分でカスタマイズしたカスタムアクション用にアイコンもカスタマイズしてみましょう。

アイコンのカスタマイズ方法

1.自分で lib 配下に作成したカスタムアクションのファイルに下記を追加。

2. ↓のようなアイコンが表示されるようになります。
f:id:hana_ori:20160329180923p:plain
  

FontAwsome Iconsとは

このfa fa-softというのはFontAwesome Iconsのアイコンです。
やりたい内容に合うアイコンを探して、アイコン名を指定しましょう。

fortawesome.github.io

core is not a symlink... CoreDataからRealmへの置き換え

podでRealmをインストールする

1. Podfileへ記入

pod `Realm`

2. pod install

出会ったエラー

core is not a symlink. Deleting...
Downloading dependency: core 0.97.1
Downloading core failed:

こちら、Xcodeのキャッシュの問題かネットの問題のようです。
焦らずに、Menu > Product > Clean を実行し、再度 pod install