私はrestkitapiを学んでいます。非常に優れたRaywenderlichレストキットチュートリアルを見つけました。ただし、Restkit0.10.1と統合されています。そして、RestKit-0.20.0-pre6を学びたいです。誰かがiOSでこのような良いチュートリアルを持っているなら。シェアしてください。前もって感謝します。
3 に答える
最後に、Raywenderlichは新しいRestKitのチュートリアルを更新しました http://www.raywenderlich.com/58682/introduction-restkit-tutorial
RestKit 0.20 http://blog.alexedge.co.uk/introduction-to-restkit-0-20/
Reskit0.20チュートリアル https://github.com/RestKit/RKGist/blob/master/tokyo.md
BlakeWattersによるRestKitを使用したRESTfuliOSアプリの開発 http://code.tutsplus.com/tutorials/restkit_ios-sdk--mobile-4524http://code.tutsplus.com/tutorials/advanced-restkit-development_iphone-sdk-- モバイル-5916
http://madeveloper.blogspot.com/2013/01/ios-restkit-tutorial-code-for-version.html
最後に常にフォローして ください: )https://github.com/RestKit/RestKit/wiki
NSScreenは有料サービスですが、そのコードは無料です-https ://github.com/subdigital/nsscreencast
NSScreencastチュートリアル-
http://nsscreencast.com/episodes/53-restkit-object-manager
http://nsscreencast.com/episodes/52-restkit-coredata
http://nsscreencast.com/episodes/51-intro-to-restkit-mapping
RestKit0.20で動作する以下のコードを見つけました。
RayWenderlichのLocation.m、Location.m、Venue.m、およびVenue.hのチュートリアルにある他のコードはまだ問題ないはずです。
//
// MasterViewController.m
// CoffeeShop
//
//
// Copyright (c) 2013 uihelpers. All rights reserved.
//
#import "MasterViewController.h"
#import <RestKit/RestKit.h>
#import "Venue.h"
#import "Location.h"
#define kCLIENTID "REPLACE_WITH_OWN_ID"
#define kCLIENTSECRET "REPLACE_WITH_OWN_SECRET"
@interface MasterViewController () {
NSMutableArray *_objects;
NSArray *cafeArray;
}
@end
@implementation MasterViewController
- (void)awakeFromNib
{
[super awakeFromNib];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.navigationItem.leftBarButtonItem = self.editButtonItem;
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject:)];
self.navigationItem.rightBarButtonItem = addButton;
NSURL *baseURL = [NSURL URLWithString:@"https://api.foursquare.com/v2"];
AFHTTPClient * client = [AFHTTPClient clientWithBaseURL:baseURL];
[client setDefaultHeader:@"Accept" value:RKMIMETypeJSON];
RKObjectManager *objectManager = [[RKObjectManager alloc] initWithHTTPClient:client];
RKObjectMapping *venueMapping = [RKObjectMapping mappingForClass:[Venue class]];
[venueMapping addAttributeMappingsFromDictionary:@{
@"name" : @"name"
}];
RKObjectMapping *locationMapping = [RKObjectMapping mappingForClass:[Location class]];
[locationMapping addAttributeMappingsFromDictionary:@{ @"address": @"address", @"city": @"city", @"country": @"country", @"crossStreet": @"crossStreet", @"postalCode": @"postalCode", @"state": @"state", @"distance": @"distance", @"lat": @"lat", @"lng": @"lng"}];
/*[venueMapping mapRelationship:@"location" withMapping:locationMapping];
[objectManager.mappingProvider setMapping:locationMapping forKeyPath:@"location"];*/
[venueMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"location" toKeyPath:@"location" withMapping:locationMapping]];
RKResponseDescriptor * responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:venueMapping
pathPattern:nil
keyPath:@"response.venues"
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:responseDescriptor];
NSString *latLon = @"37.33,-122.03";
NSString *clientID = [NSString stringWithUTF8String:kCLIENTID];
NSString *clientSecret = [NSString stringWithUTF8String:kCLIENTSECRET];
NSDictionary *queryParams;
queryParams = [NSDictionary dictionaryWithObjectsAndKeys:latLon, @"ll", clientID, @"client_id", clientSecret, @"client_secret", @"coffee", @"query", @"20120602", @"v", nil];
[objectManager getObjectsAtPath:@"https://api.foursquare.com/v2/venues/search"
parameters:queryParams
success:^(RKObjectRequestOperation * operaton, RKMappingResult *mappingResult)
{
//NSLog(@"success: mappings: %@", mappingResult);
NSArray *result = [mappingResult array];
cafeArray = [mappingResult array];
for (Venue *item in result) {
NSLog(@"name=%@",item.name);
NSLog(@"name=%@",item.location.distance);
}
[self.tableView reloadData];
}
failure:^(RKObjectRequestOperation * operaton, NSError * error)
{
NSLog (@"failure: operation: %@ \n\nerror: %@", operaton, error);
}];
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
- (void)insertNewObject:(id)sender
{
if (!_objects) {
_objects = [[NSMutableArray alloc] init];
}
[_objects insertObject:[NSDate date] atIndex:0];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
#pragma mark - Table View
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return cafeArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
/*NSDate *object = [_objects objectAtIndex:indexPath.row];
cell.textLabel.text = [object description];*/
Venue *venueObject = [cafeArray objectAtIndex: indexPath.row];
cell.textLabel.text = [venueObject.name length] > 24 ? [venueObject.name substringToIndex:24] : venueObject.name;
cell.detailTextLabel.text = [NSString stringWithFormat:@"%.0fm", [venueObject.location.distance floatValue]];
return cell;
}
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
return YES;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
[_objects removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
} else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
}
}
/*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
}
*/
/*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the item to be re-orderable.
return YES;
}
*/
@end
このチュートリアルも役立つかもしれません:
http://madeveloper.blogspot.com/2013/01/ios-restkit-tutorial-code-for-version.html
私は同様の質問をし、誰かが私に答えをくれたのと同じようにそれを解決することができました!典型的な!
ここで簡単に見てくださいRestkit0.20の基本的な操作