フレームワークの概要及びセカンドパーティ・オピ …フレームワークの概要及びセカンドパーティ・オピニオン 戸田建設グリーンボンド
RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -
-
Upload
jiro-nagashima -
Category
Technology
-
view
5.113 -
download
7
description
Transcript of RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -
![Page 1: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/1.jpg)
![Page 2: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/2.jpg)
永島 次朗 / Jiro Nagashima
iOS Developer @ nana music, inc.
@hedjirog
![Page 3: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/3.jpg)
RestKit / Examples / RKTwitter
![Page 4: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/4.jpg)
サンプルプロジェクト•動作手順• リポジトリを複製 (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サービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/5.jpg)
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サービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/6.jpg)
Agenda• RestKitとは• 導入手順 • 注意点
•基本的な使い方• Networking, Object Mapping, Core Data
![Page 7: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/7.jpg)
RestKitとは
![Page 8: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/8.jpg)
RestKitとは
RestKitObject Mapping
Networking
Core Data
![Page 9: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/9.jpg)
RestKitとは
RestKitObject Mapping
Networking
Core Data
Webサービスのクライアント実装を強力にサポート!!
![Page 10: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/10.jpg)
RestKitとは
RestKit
• RestKit• http://restkit.org/
• Github project page• https://github.com/RestKit/
RestKit
![Page 11: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/11.jpg)
導入手順• CocoaPodsを利用(推奨)• https://github.com/RestKit/RestKit#via-
cocoapods• http://cocoapods.org/?q=RestKit
![Page 12: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/12.jpg)
注意点• iOS 5.0 以上が必須• ARC• 最新バージョンに“pre”の表記 (2013.01.26現在)• https://github.com/RestKit/RestKit/tags
• Apache License 2.0
![Page 13: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/13.jpg)
Agenda✓RestKitとは✓導入手順 ✓注意点
•基本的な使い方• Networking, Object Mapping, Core Data
![Page 14: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/14.jpg)
基本的な使い方※ サンプルプロジェクト(RKTwitter, RKTwitterCoreData)から抜粋
![Page 15: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/15.jpg)
Networking (1/6)• RKObjectManager• 通信処理の共通設定
NSURL *baseURL = [NSURL URLWithString:@"http://twitter.com"];
RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:baseURL];
![Page 16: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/16.jpg)
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サービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/17.jpg)
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サービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/18.jpg)
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サービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/19.jpg)
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サービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/20.jpg)
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サービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/21.jpg)
Agenda✓RestKitとは✓導入手順 ✓注意点
✓基本的な使い方✓Networking, Object Mapping, Core Data
![Page 22: RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -](https://reader033.fdocument.pub/reader033/viewer/2022052412/559428de1a28abd05a8b456c/html5/thumbnails/22.jpg)
関連• API Reference• https://github.com/RestKit/RestKit#api-
quickstart• http://restkit.org/api/latest/
• Wiki• https://github.com/RestKit/RestKit/wiki