タグ

core dataに関するsimamikiiiのブックマーク (20)

  • こたつつきみかん » NSPredicate の使い方

    NSPredicate の話を求めて、このブログへ訪れる方が多いようなので、NSPredicate の使い方を紹介しようと思います。 NSPredicate は、NSArray で要素をフィルターするための条件を表したり、Core Data で取ってくるデータの条件を表すためのクラスです。 NSPredicate を作成する方法として最も簡単なものが、predicateWithFormat です。これを用いると、NSPredicate 独自の記法ではありますが、自然な記述で条件を書くことができます。 Predicate の条件式の基形は、”keyPath operator literal” です。それぞれには、次のようなものが入ります。 keyPath キー値コーディングのキーパス。この値が条件の判定に利用されます。self 指定すると、そのオブジェクト自体の値が利用されます。(self

  • CS193p - Lecture 13

    Core Dataはストレージの基盤でSQLデータベースの上で成り立っている。 Xcodeのツールを使ってビジュアルにオブジェクトとデータベースをマッピングさせることが出来る。そしてそれがNSManagedObjectのサブクラスになる。 ■Xcodeのビジュアルマップ(Data Model)で行われるマップ Entity -> クラス Attribute -> プロパティ Relationship -> データベースの中で他のオブジェクトをポイントするプロパティ ・Attributesで設定したもの Integer -> NSNumber String -> NSString Boolean -> NSNumber Binary data -> NSData Date -> NSDate ■コードからアクセスする方法 NSManagedObjectContextのインスタンスを作成してそ

    CS193p - Lecture 13
  • CoreDataを扱いやすくするライブラリを作ってみた - よしだ’s diary

    CoreDataの基的な使い方が解るまでに1週間位かかった。 で、とりあえずライブラリにした。 殆どコピーだけど。 概念を理解するのに時間がかかった。 大したことはやってない。 こんな感じのが最初から用意されてたら解りやすかっただろう、という概念理解用ライブラリ。 例えば、Ruby On RailsのActiveRecordとかだとレコードのオブジェクトに対してsaveしたりdestroyしたりする。 それが世間一般のMVCモデルのModelの理解だと思うんだけど、CoreDataの場合は、レコード1行ではなくモデル全体で制御してるらしい。 Model => 俗に言うデータベース Entity => 俗に言うテーブル Object => 俗に言うレコード このライブラリを使うと、CoreDataManagerとNSManagedObjectしか触らなくていいから楽。 単純な事しか出来ない

    CoreDataを扱いやすくするライブラリを作ってみた - よしだ’s diary
  • 『CoreData入門』

    こんにちは~ さてさて!今回は「CoreData入門」ってことで 難しいこと抜きで CoreDataは構造を考えるとめんどいのでまずその使い方から。 [CoreDataからデータを読み出す] いきなりCoreDataからデータを取り出してみましょう。(いれてもないのに出せるか!というツッコミは抜きで) データモデルのやり方については端折ります。ググッてください。 モデルとしては下の写真にあるように エンティティ「user」に属性 name (nsstring) telnumber (nsnumber) があるとしましょう さて、こんなデータからデータを読み出すわけですが、登場人物が3人居ます。 NSManagedObjectContext     ・・・これがデータ全体。ここへリクエストを送るとアレイが返ってくる。 NSFetchRequest     ・・・読み出し方法を入れるものこれを

    『CoreData入門』
  • iPhone アプリ研究会 CoreData について (6)

    iPhone/iPad(iOS)アプリの開発情報の発信を行っていきます。 presented by NEXT-SYSTEM iOS Developers Tasaki です。 今回でひとまず CoreData の簡単な使い方の解説は終了とします。 最後のテーマは、データの抽出方法についてです。 前回、データベースからデータを読み込む手順を取り扱いましたが、あのままではあるエンティティの全てのデータを取り出してしまいます。 当然、データベースから全てのデータを取り出すなんてこと普通はありませんから、条件を満たしたデータだけを抽出する必要がありますよね。 このときに使用するのが、NSPredicate (述語)オブジェクトです。 前回出てきた受信要求 (NSFetchRequest) クラスに、このオブジェクトを設定することで抽出条件を指定することが可能です。 そのためのメソッドがこちらです。

  • Cocoaの日々: Core Data

    CoreData を使うアプリであればこの程度の件数はすぐに行くので、起動時にマイグレーションが走ると確実に落ちてしまう。これを防ぐためには起動時に CoreData へアクセスさせないのが最低限の対策になるが、その場合でもユーザが CoreData へアクセスする操作を行った瞬間にマイグレーション処理に時間がかかって画面が固まったようになるのでユーザビリティは良くない。 マイグレーションを考慮したパターン よって CoreDataを使うアプリではマイグレーション用の画面を用意するのがベスト。処理フローはこんな感じ。 起動 ↓ (1)マイグレーションチェック もし必要なら、マイグレーション用の画面へ遷移し、(2)マイグレーション実行 ↓ 通常画面マイグレーションチェックは NSPersistentCoordinator を使えばわかる。 Cocoaの日々: [iOS][Mac] CoreD

    Cocoaの日々: Core Data
  • Cocoaの日々: 2月 2011

    CoreData を使うアプリであればこの程度の件数はすぐに行くので、起動時にマイグレーションが走ると確実に落ちてしまう。これを防ぐためには起動時に CoreData へアクセスさせないのが最低限の対策になるが、その場合でもユーザが CoreData へアクセスする操作を行った瞬間にマイグレーション処理に時間がかかって画面が固まったようになるのでユーザビリティは良くない。 マイグレーションを考慮したパターン よって CoreDataを使うアプリではマイグレーション用の画面を用意するのがベスト。処理フローはこんな感じ。 起動 ↓ (1)マイグレーションチェック もし必要なら、マイグレーション用の画面へ遷移し、(2)マイグレーション実行 ↓ 通常画面マイグレーションチェックは NSPersistentCoordinator を使えばわかる。 Cocoaの日々: [iOS][Mac] CoreD

    Cocoaの日々: 2月 2011
  • はっそうし Core Dataで全データを素早く削除するには

    Core Dataで全データを削除する方法を検索すると、安全な方法として、一データごとに削除する方法が紹介されている。安全だろうけどこれ確実に遅いよね。Store TypeとしてSQLiteを使用している場合、ファイルを削除する方法も見つかる。削除している時に、PersistentStoreに同時アクセスが発生したら確実に落ちるよな。 楽観的な排他処理が前提ではあるが、削除処理はmain threadで行うこととすればファイル削除でのCore Dataの全データ削除が実現できる。ApplicationDelegateクラスのメソッドが前提のコードは以下になる。 - (void)deleteStore { if ([NSThread isMainThread]) { // sqliteファイルのURL取得 NSURL *storeURL = [[self applicationDocumen

  • 時計仕掛けのiPhoneアプリ(6) – CoreDataを使ってみる | アルゴニートブログ

    練習で作っている時計アプリも、そろそろ形になってきました。 前回は NSUserDefaults を使い、アプリケーションの設定を保存しました。 しかし、この方法ではデータの検索をしたり、データの相互関係(リレーション)を実現するには、少し力不足… でも、そこは大丈夫。iPhoneはさすがスマートフォンと言うだけあって、標準でSQLiteを使う事ができちゃうんです!!(Androidもそうらしいですよ) しかも、普段SQLを使っていない人でもある程度扱えるよう、ORマッパー的な機能が用意されています。 Appleはこれらの、バックエンドのストレージ、それらを操作するコンテキスト、データ構造を扱うモデルを、CoreData(wikipedia)というフレームワークに纏めて提供しています。 今日はこれを扱っていこうと思います。 Core Dataコトハジメ Core Dataの手っ取り早いサン

  • [XCODE] CoreDataを用いたデータ管理を行う方法。更新・削除編! - YoheiM .NET

    今日は、CoreDataを用いたデータ管理のうち、データの更新と削除の方法をブログに書きたいと思います(*゚▽゚)ノ この記事も含めて、以下のような分類でCoreDataの使い方をブログに書いています。 今回の更新を行う為には、準備編で作成するNSManagedObjectContextが必要ですので、 そちらも参照頂けると幸いです(((o(*゚▽゚*)o))) - CoreDataを用いてデータ管理を行う方法。準備編。 - CoreDataを用いてデータ管理を行う方法。登録編!! - CoreDataを用いてデータ管理を行う方法。更新・削除編!!! - CoreDataを用いてデータ管理を行う方法。検索編!!!! データの更新を行う方法 まずは、データを保持するNSManagedObjectを取得します。 登録時に作成したり、参照時に取得したりすることが出来ます。 取得したNSManag

    [XCODE] CoreDataを用いたデータ管理を行う方法。更新・削除編! - YoheiM .NET
  • Cocoaの日々: -[NSFetchedResultsController performFetch:] でクラッシュ

    iOS/iPhone/iPad/MacOSX プログラミング, Objective-C, Cocoaなど FATAL ERRORNSFetchedResultsController を使っているアプリで下記のエラーが出た。 2010-06-25 12:29:11.679 HairConcierge[29825:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'FATAL ERROR: The persistent cache of section information does not match the current configuration. You have illegally mutated the NSFetchedResultsCo

    Cocoaの日々: -[NSFetchedResultsController performFetch:] でクラッシュ
  • iPhoneアプリ超基礎開発備忘録 CoreDataのfetchedResultsControllerではまった原因

    Core DataのfetchedResultsContollerを生成する際に、下のようなエラーが出て困った。 FATAL ERROR: The persistent cache of section information does not match the current configuration. You have illegally mutated the NSFetchedResultsController's fetch request, its predicate, or its sort descriptor without either disabling caching or using +deleteCacheWithName:' 間違ってるよ。とりあえず、deleteCacheWithNameを使って処理しろ的なことを言われる。 結果的には、あまり理解していな

  • マルチスレッドでCore Dataを利用する場合にはスレッドごとにManaged Object Contextを用意する - 甘いものが好きです

    Managed Object Contextはスレッドセーフではない Core Dataを利用するiOS Appの処理の一部をマルチスレッド実行するように修正したところ、実行時エラーが発生して強制終了するようになってしまった。このときデバッグコンソールには次のようなメッセージが出力された。 2012-01-13 14:09:16.441 [App名][12661:6c03] *** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFSet: 0x27cbd0> was mutated while being enumerated.' ステップ実行によりエラー発生箇所を調べたところ、NSManagedObjectContextオブジェクトに対してexec

    マルチスレッドでCore Dataを利用する場合にはスレッドごとにManaged Object Contextを用意する - 甘いものが好きです
  • サルでもわかる Core Data 入門【概念編】 - A Day In The Life

    iOS でデータを永続化する方法の続きです。今回は Core Data を使ったデータの永続化方法について説明します。 記事では複雑で習得が難しいとされている Core Data について概念編と実装編の2回に分けて説明していきます。記事の全体的な流れとしては Core Data がどういったフレームワークかというところから O/R マッピングの説明、Core Data を使うメリット、Core Data フレームワークの概要、Core Data を使ったプログラムの例まで説明します。次の記事で実際に動くサンプルを作成します。 Core Data って何? Core Data はモデルオブジェクトを永続化するためのフレームワークです。もとは Mac OS X のために開発されたフレームワークで、iOS 3.0 から使用できるようになりました。 Core Data はデータの永続化に SQ

    サルでもわかる Core Data 入門【概念編】 - A Day In The Life
  • サルでもわかる Core Data 入門【実装編】 - A Day In The Life

    サルでもわかる Core Data 入門【概念編】の続きです。今回は実際に Core Data を使ったプログラムを作成します。 サンプルアプリの概要 アドレス帳アプリを作りながら Core Data の使い方を説明していきます。 以下はサンプルアプリの画面構成です。 連絡先一覧画面と連絡先詳細画面の2画面構成になっています。 サンプルアプリのソースコードはこちらで公開しています。 AddressBook 開発の流れ サンプルアプリの開発の流れは以下のようになります。 プロジェクトの作成 モデルクラスの作成 エンティティの定義とエンティティとモデルクラスの関連付け ストーリーボード(Storyboard)を使ってビューコントローラの遷移と画面デザインを作成する 連絡先詳細画面の開発 連絡先一覧画面の開発 プロジェクトの作成 それでは初めにプロジェクトを作成しましょう。プロジェクトの作成手順

    サルでもわかる Core Data 入門【実装編】 - A Day In The Life
  • [iOS SDK] CoreData で、デフォルトデータを読み込ませる方法 * ラクイシロク

    CoreData で、用意したデフォルトデータを初回起動時に読み込ませたかったので、その方法をまとめてみました。 環境:Xcode 4.2.1, iPhone 5.0 Simulator デフォルトデータの作成 デフォルトデータを作成するために、「Master-Detail Application」で新規プロジェクトを作成します(「Use Core Data」にチェックが入っていることを確認します)。 このサンプルプログラムは、右上のプラスボタンを押すたびに、現在の日時を格納します。ここでは、iOS Simulator で実行して、プラスボタンを連打してデフォルトデータを作成します。 デフォルトデータの所在 作成したデータは、以下のアドレスにあります。 /Users/ユーザ名/Library/Application Support/iPhone Simulator/バージョン名/Appli

  • CoreDataに大量のデータを追加する | エンジニア開発記

    CoreDataに大量のデータを追加するとき、メモリに気をつけてあげないとすぐメモリ不足になってしまいます。 しかし、CoreDataのManagedObjectは解放したいと思ったタイミングではなかなか解放してくれません。 メモリ解放するにはちょっとした手順が必要となります。 新しくManagedObjectContextを作る ManagedObjectをひとつ追加→保存する ManagedObjectContextのresetを呼ぶ(メモリ強制開放) 2〜3を必要なだけ繰り返す 他のManagedObjectContextで作ったManagedObjectに保存結果をマージする ちなみに、大量のデータを変更・処理する時なども手順は同じです。 新しくManagedObjectContextを作る まず、新しくManagedObjectContextが必要になります。 なぜ新しいのが必要

    simamikiii
    simamikiii 2012/12/06
    ore Data]
  • CoreDataを使う1。基本的なオブジェクト。 - nyaago69のブログ

    iphoneアプリでデータの永続化にCoreDataの使用について、ちょっと整理していきましょ。 (これまで使ってきたDB接続のインターフェイスとは考え方が違うのでちょっとわかりにくかったこともあるので。) 使用している開発環境は、「XCode 3.2.1」です。 アプリケーションの作成 プロジェクトのタイプとして「navigation-based Application」を選択、「Use Core Data for storage」をチェックしてプロジェクトを作成するとCore Dataを使うためのテンプレートソースなどを作成してくれます。 今回をそれを利用します。 基的なオブジェクト 「Core Data」を使用するさいの基となるオブジェクトを生成するコードが、アプリケーションのデレゲートクラスに作られます。 このクラスのヘッダーファイルは以下のようなものになりますが。 @inte

    CoreDataを使う1。基本的なオブジェクト。 - nyaago69のブログ
  • Core Dataを使ったデータの取り扱い

    Copyright (C) iPhoneアプリ開発備忘録 All rights reserved. ブログ内で記したコード、内容の正確性は保証いたしません。 記載内容を実装したことにより発生した不具合・損害等の責任は一切負いません。 iPhone OS3.0より、データベースの取り扱いをCore Dataで実装することにより簡素にコーディングできるようになった。 Core Dataによるデータの取り扱いTips。 ■Appleのサンプルソース「CoreDataBooks」 登録、削除、変更を実装しているプロジェクト。 ■Xcodeの新規プロジェクト作成において、Navigation-based Applicationを選択し、オプション「Use Core Data for storege」にチェックして、テンプレートから生成すると、Core Dataを使用して登録、削除ができるコードがあら

    Core Dataを使ったデータの取り扱い
  • Cocoaの日々: NSFetchedResultsController のおさらい

    改めて調べなおした。NSFetchedResultsController はデータ取得と操作(挿入・変更・削除)に分けて考えるとわかりやすい。以下、UITableView および UITableViewController と組み合わせた典型的なパターンについて説明する。 データ取得 UITableView が表示するデータを UITableViewDataSource へ要求する。通常 UITableViewController がこのプロトコルを実装していて NSFetchedResultController から必要なデータを取得し、UITableViewへ返す。NSFetchedResultController は大抵の場合、UITableVIewController 初期化時にフェッチを行っていて、データ取得の要求があった場合は取得済みのデータを返す。 なお NSFetchedR

    Cocoaの日々: NSFetchedResultsController のおさらい
  • 1