0
객체를 CoreData에 매핑하려고 시도한 것은 이번이 처음입니다. 문제가별로 없지만 몇 가지 문제가 있습니다. 우선, 내가 올바르게 매핑하고 있는지, 두 번째로 성공 응답을 얻었지만 매핑 된 객체가 없는지는 알 수 없습니다.2 개의 클래스로 CoreData에 객체 매핑
2 개체가 있습니다. DbRestError & DbRestCategory. DbRestError는 서버의 오류를 포함하고 DbRestCategory는 범주 자체를 포함합니다. 둘 다 같은 응답에서 돌아 오지만 RestKit은 그들을 매핑 할 수없는 것 같습니다.
:@interface DbRestCategory : NSManagedObject
@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) NSNumber * idNum;
@end
이 내가 RestKit 내 CoreData를 초기화하는 방법입니다 DbRestCategory
DbRestError
@interface DbRestError : NSManagedObject
@property (nonatomic, retain) NSNumber * statusCode;
@property (nonatomic, retain) NSString * errorTitle;
@end
:
그
는 객체[[RKObjectManager sharedManager] getObject:[[DbRestCategory alloc] init] path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
}];
이 어떻게 JSON입니다 :
- (void)initRestClient
{
NSURL *baseURL = [NSURL URLWithString:kWebServiceBaseURL];
self.manager = [RKObjectManager managerWithBaseURL:baseURL];
[self.manager setRequestSerializationMIMEType:RKMIMETypeJSON];
[self.manager setAcceptHeaderWithMIMEType:RKMIMETypeJSON];
[self.manager addResponseDescriptorsFromArray:[RKObjectManager sharedManager].responseDescriptors];
[self.manager addRequestDescriptorsFromArray:[RKObjectManager sharedManager].requestDescriptors];
[self.manager.HTTPClient.operationQueue setMaxConcurrentOperationCount:MAX_CONCURRENT_OPERATION_COUNT];
[self.manager setManagedObjectStore:[[MainDb sharedDb] objectStore]];
[RKObjectManager setSharedManager:self.manager];
self.requestMethod = RKRequestMethodGET;
self.statusCode = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful);
RKRoute *categoriesRoute = [RKRoute routeWithClass:[DbRestCategory class] pathPattern:kGetCategories method:self.requestMethod];
categoriesRoute.shouldEscapePath = YES;
[self.manager.router.routeSet addRoute:categoriesRoute];
// @@yosi -- Error Mapping
//
//
RKEntityMapping *errorMapping = [RKEntityMapping mappingForEntityForName:@"DbRestError" inManagedObjectStore:[[MainDb sharedDb] objectStore]];
[errorMapping addAttributeMappingsFromDictionary:@{ @"statusCode" : @"statusCode", @"description" : @"errorTitle" }];
// @@yosi -- Categories Mapping
//
//
RKEntityMapping *categoryMapping = [RKEntityMapping mappingForEntityForName:@"DbRestCategory" inManagedObjectStore:[[MainDb sharedDb] objectStore]];
[categoryMapping addAttributeMappingsFromDictionary:@{ @"id" : @"idNum", @"name" : @"title" }];
RKObjectMapping *categoriesMapping = [RKObjectMapping mappingForClass:[RestCategories class]];
[categoriesMapping addRelationshipMappingWithSourceKeyPath:@"categories" mapping:categoryMapping];
[categoriesMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"error" toKeyPath:@"error" withMapping:errorMapping]];
[[RKObjectManager sharedManager] addResponseDescriptor:[RKResponseDescriptor responseDescriptorWithMapping:categoriesMapping
method:self.requestMethod
pathPattern:kGetCategories
keyPath:nil
statusCodes:self.statusCode]];
}
이 내가 요청 자체를하고 있어요 방법은 다음과 같습니다
- (void)setup { self.objectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:[self managedObjectModel]]; NSString *path = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"database.sqlite"]; NSLog(@"Setting up store at %@", path); [self.objectStore addSQLitePersistentStoreAtPath:path fromSeedDatabaseAtPath:nil withConfiguration:nil options:@{ NSInferMappingModelAutomaticallyOption: @YES, NSMigratePersistentStoresAutomaticallyOption: @YES } error:nil]; [self.objectStore createManagedObjectContexts]; }
이내가 내 RestKit 클라이언트를 초기화하는 방법입니다 모양 :
{
error: {
statusCode: 10,
description: "success"
},
categories: [
{
id: "3",
name: "cate 3"
},
{
id: "4",
name: "cate 4"
},
{
id: "5",
name: "cate 5"
},
{
id: "1",
name: "cate 1"
},
{
id: "6",
name: "cate 6"
},
{
id: "2",
name: "cate 2"
}
]
}
누군가 어떤 물건도없이 응답을받는 이유를 이해할 수 있습니까?
'error'와'categories'는 동일한 응답을 받고있다,이 같은 요청 매핑을보십시오. 왜 당신은'getObjectsAtPath' 대신'getObject' 메소드를 사용하고 있습니까? 두 엔티티를 매핑하는 두 개의 응답 디스크립터를 추가 할 수 있습니다. –
@AnushaK 그래, 그랬어,하지만 여전히 작동하지 않아. 이제 다음 오류가 표시됩니다. https://groups.google.com/forum/#!topic/restkit/2u5Ke_FnaZU –