Persistence(16)~Core Dataでの保存(3)

2011. 07. 24
●ビューコントローラの追加

ビューコントローラのソース/ヘッダファイルとnibファイルを追加します。

Classesフォルダを右クリックして、コンテキストメニューから『追加』→『新規ファイル...』を選択します。

7410

『Cocoa Touch Class』の『UIViewController subclass』を選択し、オプションの『With XIB for user interface』にチェックを入れ、ファイル名を『PersistenceViewController.m』とします。

7411

Classesフォルダ下にソース/ヘッダファイルだけでなくnibファイルも置かれるので、ドラッグ&ドロップでPersistenceViewContoller.xibファイルをResourcesフォルダ下に移動します。

7412


●ビューコントローラのヘッダファイルPersistenceViewController.hの編集

4つのテキストフィールドのアウトレットとなるプロパティを宣言します。
(太字が追加した部分)

#import <UIKit/UIKit.h>

@interface PersistenceViewController : UIViewController {
    UITextField *line1;
    UITextField *line2;
    UITextField *line3;
    UITextField *line4;

}

@property (nonatomic, retain) IBOutlet UITextField *line1;
@property (nonatomic, retain) IBOutlet UITextField *line2;
@property (nonatomic, retain) IBOutlet UITextField *line3;
@property (nonatomic, retain) IBOutlet UITextField *line4;


@end

7413


●アプリケーションデリゲートのヘッダファイルCore_Data_PersistenceAppDelegate.hの編集

アプリケーションデリゲートクラスにビューコントローラPersistenceViewControllerのビューを追加します。
(太字が追加した部分)

#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>

@class PersistenceViewController;

@interface Core_Data_PersistenceAppDelegate : NSObject <UIApplicationDelegate> {

    UIWindow *window;

@private
    NSManagedObjectContext *managedObjectContext_;
    NSManagedObjectModel *managedObjectModel_;
    NSPersistentStoreCoordinator *persistentStoreCoordinator_;

    PersistenceViewController *rootController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;

@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;

@property (nonatomic, retain) IBOutlet PersistenceViewController *rootController;

- (NSURL *)applicationDocumentsDirectory;
- (void)saveContext;

@end

7435

1)ビューコントローラの前方宣言

ウィンドウにビューを組み込むため、ビューコントローラのクラスPersistenceViewControllerを@classによる前方宣言でクラス名だとコンパイラに指示します。

2)ビューのインスタンス変数の宣言の追加

ビューコントローラのインスタンス変数rootControllerを追加しています。
(別のコンパイラ指示子を挟んでいないのでこの変数も@privateに入っていますが、特にprivateである必要は無いので、ウィンドウの直後に宣言しても構わないと思われます)

3)ビューのプロパティの宣言の追加

ビューコントローラをアウトレットとしてプロパティを宣言します。


●ウィンドウのnibファイルMainWindow.xibの編集

ウィンドウにビューを追加するため、MainWindow.xibを編集します。

Resources下にあるウィンドウのnibファイルMainWindow.xibをダブルクリックし、Interface Builderで開きます。

LibraryウィンドウからDocumentウィンドウに『View Controller』をドラッグ&ドロップして追加し、InspectorウィンドウでIdentityタブを開き、『Class』を『PersistenceViewController』に変更します。

7437

Documentウィンドウで『Core_Data_Persistence App Delegate』を選択し、InspectorウィンドウでConnectionタブを開き、Outletsの『rootController』を先程の『Persistence View Controller』に接続します。

7438


●ビューコントローラのnibファイルPersistenceViewController.xibの編集

ビューに各4つのラベルとテキストフィールドを追加するため、PersistenceViewController.xibを編集します。

Resources下に移動したビューコントローラのnibファイルPersistenceViewController.xibをダブルクリックし、Interface Builderで開きます。

LibraryウィンドウからViewウィンドウへ、LabelとText Fieldを4つずつドラッグ&ドロップして追加します。

各パーツの位置とサイズは下表の通りです。

LabelX:Y:W:H:Text FieldX:Y:W:H:
Line 1:20235321 812021931
Line 2:20625321 815921931
Line 3:201015321 819821931
Line 4:201405321 8113721931

ラベルのタイトルは、InspectorウィンドウのAttributesタブを開き、LabelのTextで変更します。

7414

DocumentウィンドウでFile's Ownerを選択し、INspectorウィンドウのConnectionsタブを開いて、アウトレットをViewウィンドウのテキストフィールドに接続します。

7415


●データのモデリング

永続ストアに保存するCore Dataのモデルを作成します。

モデルは一つのエンティティLineを持ち、何行目かを表すlineNumとテキストフィールド内の文字列を保持するlineTextの2つの属性があります。

1)エンティティの追加

XcodeでResourcesのCore_Data_Persistence.xcdatamodeld下にあるCore_Data_Persistence.xcdatamodelを選択し、モデルエディタを表示します。

7430

エンティティペインの左下角にある『+』ボタンでエンティティを追加し、詳細ペインで名前を『Line』に変更します。
(クラスはNSManagedObjectのままです)

7431

2)属性の追加

プロパティペインの左下角にある『+』ボタンをクリックして『属性を追加』を選択し、詳細ペインで名前を『lineNum』に、データ型を『整数16』に変更します。

7432

同様にもう一つ属性を追加し、詳細ペインで名前を『lineText』に、データ型を『文字列』に変更します。

7433

作業が完了したら保存します。



参考文献

iOS Core Dataチュートリアル

はじめてのiPhone3プログラミングはじめてのiPhone3プログラミング
(2009/12/17)
Dave Mark、Jeff LaMarche 他

商品詳細を見る

Beginning Ios 6 Development: Exploring the Ios SdkBeginning Ios 6 Development: Exploring the Ios Sdk
(2012/12/26)
David Mark、Jack Nutting 他

商品詳細を見る






Bose SoundLink around-ear wireless headphones II
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
06 | 2017/07 | 08
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

Bose SoundLink around-ear wireless headphones II
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR