有没有像 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 教程不在表格单元格上显示数据

正则RE

UITableViewCell 中的自定义 UIView

Python:使用re.substitute作为模板时保持行格式(breaklines)

从数据库中提取一系列数字

在 raywenderlich.com 文章中设置 CALayer 颜色