RKObjectManager를 사용하는 경우 objectManagerWithBaseURL 메서드를 호출 할 때만 인스턴스를 만듭니다. appDelegate에서. 당신이 개체에 희망이 그것을 사용하는 경우
RKObjectManager * restKitManager = [RKObjectManager objectManagerWithBaseURL:@"http://toto/v1/ui"];
액세스 매니저 [RKObjectManager sharedManager]를 사용할 수 있습니다 후, 단지 RestKit를 가져옵니다 개인적으로
[RKObjectManager sharedManager].serializationMIMEType = RKMIMETypeJSON;
나는 개체 그냥 매핑을 관리 할 수 있도록, 그리고 내 로그인 매핑 메도 당신에게 exemple를 제공 할 수 있습니다 : 당신이 마지막 줄이 표시되는 경우
-(void)mappingLogin
{
log_debug("mappingLogin")
RKObjectMapping * userMapping = [RKObjectMapping mappingForClass:[VOUser class]];
[userMapping mapKeyPath:@"id" toAttribute:@"identifier"];
[userMapping mapKeyPath:@"ref" toAttribute:@"ref"];
[userMapping mapKeyPath:@"login" toAttribute:@"login"];
[userMapping mapKeyPath:@"mail" toAttribute:@"mail"];
RKObjectMapping * gatewayMapping = [RKObjectMapping mappingForClass:[VOGateway class]];
[gatewayMapping mapKeyPath:@"id" toAttribute:@"identifier"];
[gatewayMapping mapKeyPath:@"serial" toAttribute:@"serial"];
[gatewayMapping mapKeyPath:@"status" toAttribute:@"status"];
RKObjectMapping * authReturnMapping = [RKObjectMapping mappingForClass:[VOAuth class]];
[authReturnMapping mapKeyPath:@"sessionId" toAttribute:@"sessionId"];
[authReturnMapping mapKeyPath:@"user" toRelationship:@"user" withMapping:userMapping];
[authReturnMapping mapKeyPath:@"gateway" toRelationship:@"gateway" withMapping:gatewayMapping];
[[RKObjectManager sharedManager].mappingProvider setMapping:authReturnMapping forKeyPath:@""];
}
당신은 내가 [RKObjectManager sharedManager]를 내 매핑을 설정하는 데 사용할 것을 볼 수있다, 나는 만들지 마십시오 다른 인스턴스.
코드의 구조에 따라 다르지만 직접 viewsikitor에서 restik을 사용하지는 않지만 RestKit을 관리하는 레이어가 있습니다. 내보기에서 resouces에 해당하는 메서드를 호출합니다.
몇 가지 점을 명확히하려면 말해주십시오. (특정 exemple 세부 객체에 대해 도움이 필요한 경우 매핑하려는 객체). 다른 질문에 대한
편집 : 반환 된 객체의 사용
1) Exemple :
- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects {
log_debug("##### BackEnd - %@ - %i #####",objectLoader.resourcePath,objectLoader.response.statusCode)
if ([objectLoader.response isSuccessful]) {
if ([objectLoader wasSentToResourcePath:@"/auth"]) {
VOAuth * auth = [objects objectAtIndex:0];
[BESessionManager getInstance].auth = auth;
[[NSNotificationCenter defaultCenter] postNotificationName:kSuccessLoginPostLogin object: nil];
} else if ([objectLoader wasSentToResourcePath:@"/list1/0"]) {
log_debug("count %i",[objects count])
}
}
}
- (void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error {
log_debug("!!!!! BackEnd - %@ - %i !!!!!",objectLoader.resourcePath,objectLoader.response.statusCode)
if ([objectLoader wasSentToResourcePath:@"/auth"]) {
[[NSNotificationCenter defaultCenter] postNotificationName:kErrorLoginPostLogin object: nil];
}
}
2) 사용하기위한 RKObjectManager sharedManager,
#import <RestKit/RestKit.h>
.H 개체에서 수입 API
@Neruja Joseph 편집 :
BESessionManager는 Restkit에서로드 한 모든 데이터를 보관하는 내 데이터 관리자입니다. 이 객체는 싱글 톤입니다. 따라서이 객체를 가져 오면이 객체의 단일 인스턴스는 모든 뷰에서 접근 할 수 있습니다 :
import "BESessionManager.시간 "
그래서, 내 콜백 함수 내 BESessionManager에 데이터를 저장하고이 끝나면, 내 콜백 함수에서 통지를 보내
[[NSNotificationCenter defaultCenter] postNotificationName : kSuccessLoginPostLogin 대상 : 전무]
데이터를 표시하거나 데이터를 사용할 필요가 내 시야에서
나는 위해이 걸릴 :
1 - 내가 처음 restkit를 사용하는 경우, 내가 응용 프로그램을 시작할 때, 나는 나의 restKit 관리자를 초기화하기 w i '매핑', 'serialization'및 전역 옵션 (baseUrl, certificatValidation, serializationMIMEType, 로그 구성) ... 내 BERestKitConfig 역시 싱글 톤입니다.
2 - 로그인 서비스가있는 경우 BEServiceUser라는 또 다른 싱글 톤이 있습니다. 여기서는 로그인을 위해 각 관련 서비스에 대한 메소드를 추가합니다.
[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(onLoginSuccess) name: kSuccessLoginPostLogin object: nil];
[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(onLoginError) name: kErrorLoginPostLogin object: nil];
[[BEServiceUser getInstance] postLogin:@"toto" withPassword:@"toto"];
3 - 경우에 좋은 결과, onLoginSuccess 방법은 다음과 같습니다 (무효)가 postLogIn - - - (무효) getLogout (무효) getUserInfo ... 내있는 viewDidLoad에서 exemple에 대한
#import <Foundation/Foundation.h>
// Mandatory class for services
#import <RestKit/RestKit.h>
#import "BESessionManager.h"
#import "BERestKitConfig.h"
// Value Objects
#import "VOUser.h"
#import "VOGateway.h"
#import "VOAuth.h"
// Send Objects
#import "SOAuth.h"
@interface BEServiceUser : NSObject <RKObjectLoaderDelegate> {
SOAuth * logObj;
}
@property (nonatomic, retain) SOAuth * logObj;
//Singleton
+(BEServiceUser *)getInstance;
+(void)resetInstance;
// CallBack
-(void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects;
-(void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error;
// Services
-(void)postLogin:(NSString*)login withPassword:(NSString*)password;
-(void)getLogout;
@end
우리는 할 수 있습니다 내 견해로 불렸다. 그래서 내 세션 관리자에서 내보기에서 데이터를 걸릴 수 있습니다 :
[BESessionManager getInstance].auth;
안녕하세요 꽤 감사합니다. 당신은 예를 들어, restkit 응답을 얻는 방법보기) : - (무효) objectLoader : (RKObjectLoader *) objectLoader didLoadObjects : 다음 내 AppDelegate에있는 [RKObjectManager sharedManager]를 사용하는 경우 (NSArray를 *)는 그래서 및 객체 내 viewcontrollers restkit.h 가져올 수있는 올바른 있습니까? .. 감사합니다 !!! – IturPablo
첫 번째 질문 : 내 sessionManager에서 리턴 된 객체를 누가 싱글 톤으로 저장했는지, notifaction을 보냅니다. 내 viewController가이 알림을 받으면 메소드를 호출하여 내 sessionManager의 데이터를 검색합니다. – Beber
viewController에서 [RKObjectManager sharedManager]를 사용하려면 ExempleViewController.h에서 #import를 추가하십시오. –
Beber