有没有像 raywenderlich 这样的 Restkit 2.0 教程? [关闭]
Posted
技术标签:
【中文标题】有没有像 raywenderlich 这样的 Restkit 2.0 教程? [关闭]【英文标题】:Is there any Restkit 2.0 Tutorial like raywenderlich? [closed] 【发布时间】:2013-01-23 12:09:31 【问题描述】:我正在学习 restkit api。我找到了一个非常好的Raywenderlichrestkit 教程。但它与 Restkit 0.10.1 集成。我想学习一个 RestKit-0.20.0-pre6。如果有人在ios中有这样的好教程。请分享。提前致谢。
【问题讨论】:
【参考方案1】:Raywenderlich 终于更新了新 RestKit 的教程 http://www.raywenderlich.com/58682/introduction-restkit-tutorial
RestKit 0.20 http://blog.alexedge.co.uk/introduction-to-restkit-0-20/
Reskit 0.20 教程 https://github.com/RestKit/RKGist/blob/master/TUTORIAL.md
使用 RestKit 开发 RESTful iOS 应用程序 布莱克·沃特斯 http://code.tutsplus.com/tutorials/restkit_ios-sdk--mobile-4524 http://code.tutsplus.com/tutorials/advanced-restkit-development_iphone-sdk--mobile-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
【讨论】:
修复 alexedge 的第一个链接:github.com/RestKit/RestKit/issues/832,然后从构建阶段删除脚本 看看这个网站也restkit-tutorials.com 自 2015 年 2 月起,有一个全新的教程,介绍如何将 RestKit 与 CoreData 结合使用 medium.com/ios-os-x-development/…【参考方案2】:我发现下面的代码可用于 RestKit 0.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
【讨论】:
非常好的教程。谢谢。 酷...非常有帮助..非常感谢。【参考方案3】:我问了一个类似的问题并设法解决了,就像有人给了我答案一样!典型!
快速浏览这里Restkit 0.20 basic operation
【讨论】:
以上是关于有没有像 raywenderlich 这样的 Restkit 2.0 教程? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
raywenderlich 的 AFNetworking 教程不在表格单元格上显示数据