22

RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

Embed Size (px)

DESCRIPTION

iPhoneアプリ開発でWebサービスのクライアント実装をサポートしてくれるフレームワーク「RestKit」の紹介。

Citation preview

Page 1: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -
Page 4: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

サンプルプロジェクト•動作手順• リポジトリを複製 (masterブランチ)• Examplesディレクトリ下のプロジェクトを開く• Build & Run

$ git clone -b master --recursive git://github.com/RestKit/RestKit.git

$ open RestKit/Examples/RKTwitter/RKTwitter.xcodeproj

※ 同時に複数のサンプルプロジェクトを開くと、(サブプロジェクトとして含まれるRestKitの参照に失敗して)

ビルドエラーになる場合があるので注意

Page 5: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

Submoduleを含むリポジトリ複製

recursiveオプションを付与(clone後のsubmodule更新)

$ git clone -b master --recursive git://github.com/RestKit/RestKit.git

$ open RestKit/Examples/RKTwitter/RKTwitter.xcodeproj

サンプルプロジェクト(補足)

Page 6: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

Agenda• RestKitとは• 導入手順 • 注意点

•基本的な使い方• Networking, Object Mapping, Core Data

Page 7: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

RestKitとは

Page 8: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

RestKitとは

RestKitObject Mapping

Networking

Core Data

Page 9: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

RestKitとは

RestKitObject Mapping

Networking

Core Data

Webサービスのクライアント実装を強力にサポート!!

Page 10: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

RestKitとは

RestKit

• RestKit• http://restkit.org/

• Github project page• https://github.com/RestKit/

RestKit

Page 12: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

注意点• iOS 5.0 以上が必須• ARC• 最新バージョンに“pre”の表記 (2013.01.26現在)• https://github.com/RestKit/RestKit/tags

• Apache License 2.0

Page 13: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

Agenda✓RestKitとは✓導入手順 ✓注意点

•基本的な使い方• Networking, Object Mapping, Core Data

Page 14: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

基本的な使い方※ サンプルプロジェクト(RKTwitter, RKTwitterCoreData)から抜粋

Page 15: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

Networking (1/6)• RKObjectManager• 通信処理の共通設定

NSURL *baseURL = [NSURL URLWithString:@"http://twitter.com"];

RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:baseURL];

Page 16: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

Networking (2/6)• RKObjectManager• 共通設定からリクエストを作成

RKObjectManager *objectManager = [RKObjectManager sharedManager]; [objectManager getObjectsAtPath:@"/status/user_timeline/RestKit" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { NSArray* statuses = [mappingResult array]; NSLog(@"Loaded statuses: %@", statuses); } failure:^(RKObjectRequestOperation *operation, NSError *error) { NSLog(@"Hit error: %@", error); }];

Page 17: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

Object Mapping (3/6)• RKObjectMapping• マッピング対象のクラスを指定• レスポンスで受け取るJSONデータのキーと、

クラスのプロパティをマッピングRKObjectMapping *statusMapping;statusMapping = [RKObjectMapping mappingForClass:[RKTweet class]];

[statusMapping addAttributeMappingsFromDictionary:@{ @"id" : @"statusID", @"created_at" : @"createdAt", @"text" : @"text", @"url" : @"urlString", @"in_reply_to_screen_name" : @"inReplyToScreenName", @"favorited" : @"isFavorited", }];

※ CoreData利用時のマッピングは後述(RKEntityMapping)

Page 18: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

Object Mapping (4/6)• RKObjectMapping• マッピングを適用するレスポンスの状態を

RKResponseDescriptorで設定• RKObjectManagerへ設定内容を引き渡し

RKResponseDescriptor *responseDescriptor;responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:statusMapping pathPattern:@"/status/user_timeline/:username" keyPath:nil statusCodes:[NSIndexSet indexSetWithIndex:200]];

RKObjectManager *objectManager = [RKObjectManager sharedManager];[objectManager addResponseDescriptor:responseDescriptor];

Page 19: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

Core Data (5/6)• RKManagedObjectStore• Core Dataスタックの管理

NSManagedObjectModel *managedObjectModel;managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];

RKManagedObjectStore *managedObjectStore;managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel];

RKObjectManager *objectManager = [RKObjectManager sharedManager];objectManager.managedObjectStore = managedObjectStore;

Page 20: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

Core Data (6/6)• RKEntityMapping• マッピング対象のエンティティと、

RKManagedObjectSotreインスタンスを指定• 値が一意となる属性を指定(オブジェクト更新時

に利用される)RKEntityMapping *tweetMapping;tweetMapping = [RKEntityMapping mappingForEntityForName:@"Tweet" inManagedObjectStore:managedObjectStore];

tweetMapping.identificationAttributes = @[ @"statusID" ];[tweetMapping addAttributeMappingsFromDictionary:@{ @"id": @"statusID", @"created_at": @"createdAt", @"text": @"text", @"url": @"urlString", @"in_reply_to_screen_name": @"inReplyToScreenName", @"favorited": @"isFavorited", }];

Page 21: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -

Agenda✓RestKitとは✓導入手順 ✓注意点

✓基本的な使い方✓Networking, Object Mapping, Core Data