2014-11-02 3 views
1

Core Data와 RestKit이 새로 도입되었으므로 이미 Core Data와 RestKit에 대한 자습서를 많이 읽었지만 서버에서 데이터를 가져올 수 없습니다. 내 애플 리케이션에서 데이터를 얻고, DB에 저장하고, DB가 있거나 인터넷에 연결되어 있지 않으면 RestKit이 나를 위해 그것을 할 수 있다는 것을 알고 있지만, 내 데이터를 얻으 려 할 때 http://salatiki.com.ua/api/get.php?getSaladsType에서 볼 수있다. 몇 가지 오류와 아무 일도 일어나지 않습니다. 제발 저를 도와주세요. 내가 뭘 잘못하고있는 걸까요? 나는 유용한 참고 문헌에 대해 매우 감사 할 것입니다. 고맙습니다.RestKit 0.20은 서버에서 데이터를 가져올 수 없습니다.

나는 "sCategory에"엔티티와 Model.xxdatamodelid이

AppDelegate.m에서
#import <Foundation/Foundation.h> 
#import <CoreData/CoreData.h> 

@interface SCategory : NSManagedObject 

@property (nonatomic, retain) NSString * cName; 
@property (nonatomic, retain) NSNumber * cId; 
@property (nonatomic, retain) NSString * cSection; 
@property (nonatomic, retain) NSString * cImage; 

@end 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; 
    RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel]; 
    [RKMIMETypeSerialization registerClass:[RKNSJSONSerialization class] forMIMEType:@"text/html"]; 
    NSError *error = nil; 
    BOOL success = RKEnsureDirectoryExistsAtPath(RKApplicationDataDirectory(), &error); 
    if (! success) { 
     RKLogError(@"Failed to create Application Data Directory at path '%@': %@", RKApplicationDataDirectory(), error); 
    } 
    NSString *path = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"Store.sqlite"]; 
    NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:path fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:&error]; 
    if (! persistentStore) { 
     RKLogError(@"Failed adding persistent store at path '%@': %@", path, error); 
    } 
    [managedObjectStore createManagedObjectContexts]; 

    RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://salatiki.com.ua"]]; 
    manager.managedObjectStore = managedObjectStore; 

    RKEntityMapping *categoryMapping = [RKEntityMapping mappingForEntityForName:NSStringFromClass([SCategory class]) inManagedObjectStore:managedObjectStore]; 
    [categoryMapping addAttributeMappingsFromDictionary:@{ @"img": @"cImage", 
                  @"section": @"cSection", 
                  @"vid" : @"cId", 
                  @"vname" : @"cName" }]; 

    NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful); // Anything in 2xx 
    RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:categoryMapping method:RKRequestMethodGET pathPattern:@"/api/get.php?getSaladsType" keyPath:nil statusCodes:statusCodes]; 

    [[RKObjectManager sharedManager] addResponseDescriptor:responseDescriptor]; 
    [manager getObjectsAtPath:@"/api/get.php?getSaladsType" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
     NSLog(@"map arr: %@", mappingResult.array); 
    } failure:^(RKObjectRequestOperation *operation, NSError *error) { 
     NSLog(@"request error"); 
    }]; 

    // Override point for customization after application launch. 
    return YES; 
} 

로그 :

014-11-02 13:31:41.742 Salatiki[2000:3713] E restkit.network:RKObjectRequestOperation.m:213 GET 'http://salatiki.com.ua/api/get.php?getSaladsType' 
(200 OK/0 objects) [request=0.0000s mapping=0.0000s total=0.0267s]: Error 
Domain=org.restkit.RestKit.ErrorDomain Code=1001 "No response descriptors match the 
response loaded." UserInfo=0x7f9fb883c880 {NSLocalizedFailureReason=A 200 response was 
loaded from the URL 'http://salatiki.com.ua/api/get.php?getSaladsType', which failed to 
match all (0) response descriptors:, NSErrorFailingURLStringKey=http://salatiki.com.ua/api/get.php?getSaladsType, 
NSErrorFailingURLKey=http://salatiki.com.ua/api/get.php?getSaladsType, 
NSUnderlyingError=0x7f9fb883c3c0 "No mappable object representations were found at the 
key paths searched.", keyPath=null, NSLocalizedDescription=No response descriptors match 
the response loaded.} 
    2014-11-02 13:31:41.766 Salatiki[2000:613] I restkit.network:RKObjectRequestOperation.m:150 GET 'http://salatiki.com.ua/api/get.php? 
getSaladsType' 
    2014-11-02 13:31:41.766 Salatiki[2000:613] request error 

답변

0

마지막으로 솔루션을 찾으십시오. 문제가 RKResponseDescriptor에 있었고, pathPattern은 제 경우에 nil이어야합니다. 이유는 모르지만 작동합니다!

0

당신은 URL과 함께 투쟁하는거야 http://salatiki.com.ua/api/get.php?getSaladsType은 쿼리 매개 변수에 많은 의미를 넣고 있으며 RestKit은 쿼리 매개 변수를 사용하지 않기 때문에 응답 설명자 패턴의 경우.

이 요청에 get.php 만 사용하는 경우 응답 설명자 경로 패턴에서 ?getSaladsType을 제거하면 제대로 작동합니다. 여러가지 용도로 사용하는 경우 RestKit 사용을 중단하고 서버를 변경하여 해당 쿼리 매개 변수를 사용하지 않거나 RestKit을 편집하지 않아야합니다.

관련 문제