Приложение для iPhone: проблема интеграции Yelp Api - PullRequest
2 голосов
/ 28 июля 2011

в приложении для iPhone. Я хочу интегрировать Yelp API

, для этого загружаю пример Yelp из GitHub

Я пытался добавить все библиотечные файлы, как Frameworks для Yelp, так и Github, в свой проект

, но я все еще не могу сослаться на файлы, которые находятся в заголовке фреймворка.

, например: GHAsyncTestCase, и он выдает сообщение, не может найти объявление интерфейса "GHAsyncTestCase" суперкласса AOuthTest

Что может быть не так?

, пожалуйста, помогите мне интегрировать его и, если возможно, объясните мне все необходимые шаги для его интеграции в мой проект.

Спасибо

1 Ответ

6 голосов
/ 01 августа 2011

у вас есть дополнительные настройки в xcode

YAJL Framework Установка в XCode 4 (iOS)

* In Build Phases, make sure its listed in Link Binary With Libraries, along with:
      o CoreGraphics.framework
      o Foundation.framework
      o UIKit.framework
* In Build Settings:
      o Under Framework Search Paths make sure the (parent) directory to YAJLiOS.framework is listed.
      o Under Other Linker Flags in your target, add -ObjC and -all_load
* Import with #import <YAJL/YAJL.h>.

EDITED

, которые вы можете создатьПользовательский класс или напишите приведенный ниже код в любом классе, но я предлагаю вам создать пользовательский класс следующим образом:

в файле .h скажем test.h

#import <Foundation/Foundation.h>
#import "OAuthConsumer.h"
#import <GHUnit/GHUnit.h>
#import <YAJL/YAJL.h>

@interface test : NSObject 
{
    NSMutableData *responseData;

    NSDictionary *JSON1 ;
}

- (NSMutableDictionary *) getData ;

@end

, теперь в файле test.m

#import "test.h"
#import "OAuthConsumer.h"

@implementation test

- (void)test:(NSString *)urlString
{       
    NSURL *URL = [NSURL URLWithString:@"http://api.yelp.com/v2/search?term=restaurants&location=new%20york"];
    OAConsumer *consumer = [[[OAConsumer alloc] initWithKey:@"yourKey" secret:@"yourKey"] autorelease];
    OAToken *token = [[[OAToken alloc] initWithKey:@"yourKey-" secret:@"yourKey-Bc"] autorelease];  

    id<OASignatureProviding, NSObject> provider = [[[OAHMAC_SHA1SignatureProvider alloc] init] autorelease];
    NSString *realm = nil;  

    OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:URL
                                                                   consumer:consumer
                                                                      token:token
                                                                      realm:realm
                                                          signatureProvider:provider];
    [request prepare];

    responseData = [[NSMutableData alloc] init];
    //[self prepare];

    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    //[self waitForStatus:kGHUnitWaitStatusSuccess timeout:10.0];

    //NSDictionary *JSON = [responseData yajl_JSON];    
    //GHTestLog(@"JSON: %@", [JSON yajl_JSONStringWithOptions:YAJLGenOptionsBeautify indentString:@"  "]);
    //NSLog(@"%@",[JSON valueForKey:@"region"]);

    [connection release];
    [request release];
}

- (void) setString
{
    //NSMutableString *JSON = [[NSMutableString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    //NSLog(@"JSON Data Parsing:--->%@",JSON);
    JSON1 = [responseData yajl_JSON];

    NSArray *arry = [JSON1 valueForKey:@"businesses"];

    for (int i = 0; i < [arry count]; i ++)
    {
        NSLog(@"Res Name : %@",[[arry objectAtIndex:i] valueForKey:@"name"]);
    }
    NSDictionary *temp = [arry objectAtIndex:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    [responseData setLength:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [responseData appendData:data];

}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    NSLog(@"Error: %@, %@", [error localizedDescription], [error localizedFailureReason]);
    //[self notify:kGHUnitWaitStatusFailure forSelector:@selector(test)];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{
    [self setString];
    //[self notify:kGHUnitWaitStatusSuccess forSelector:@selector(test)];
}

- (NSDictionary *) getData
{

    return JSON1 ;
}

- (void)tearDown 
{
    [responseData release];
    responseData = nil;
}

@end

Надеюсь, это поможет.Это работает для меня ....

...