2013-04-29 60 views
0

我正在爲iOS編寫一個簡單的多項選擇問題。無法使用RestKit檢索數據,因爲類不是鍵值編碼兼容

我想創建一個API,以便我可以檢索問題並存儲用戶的答案。我使用django和tastypie作爲後端。

我用這個功能來加載quesion在我的應用程序:

- (void)loadQuestion 
{ 
RKObjectMapping* questionMapping = [RKObjectMapping mappingForClass:[Question class]]; 
[questionMapping addAttributeMappingsFromDictionary:@{ 
@"question": @"question", 
}]; 

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:questionMapping pathPattern:nil keyPath:@"question" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]; 

NSURL *URL = [NSURL URLWithString:@"http://127.0.0.1:8000/api/v1/question/2/?format=json"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:URL]; 
NSLog(@"request : %@", request); 
RKObjectRequestOperation *objectRequestOperation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[responseDescriptor]]; 

[objectRequestOperation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
    RKLogInfo(@"Load collection of Articles: %@", mappingResult.array); 
} failure:^(RKObjectRequestOperation *operation, NSError *error) { 
    RKLogError(@"Operation failed with error: %@", error); 
}]; 

[objectRequestOperation start]; 
} 

這裏是我的question.h:

#import <Foundation/Foundation.h> 

@interface Question : NSObject 

@property (strong) NSString *question; 

@end 

而且我question.m

@implementation Question 

@synthesize question = _question; 

@end 

的JSON如下:

{ 
"chapter": "/api/v1/chapter/2/", 
"id": 2, " 
pub_date": "2013-04-25T19:23:42.930097", 
"question": "Quelle est la capitale de ce pays : Emirats Arabes Unis ?", 
"resource_uri": "/api/v1/question/2/" 
} 

而且tastypie API是:

from tastypie.resources import ModelResource 
from tastypie import fields 

from .models import Question, Chapter 

class ChapterResource(ModelResource): 
class Meta: 
    queryset = Chapter.objects.all() 
    resource_name = 'chapter' 

class QuestionResource(ModelResource): 
chapter = fields.ForeignKey(ChapterResource, 'chapter') 

class Meta: 
    queryset = Question.objects.all() 
    resource_name = 'question' 

我得到的錯誤是: 終止應用程序由於未捕獲的異常 'NSUnknownKeyException',原因:「[< __NSCFString 0x76b3030> valueForUndefinedKey:]:此類不關鍵問題的編碼標準。「

我讀https://github.com/RestKit/RestKit/wiki/Object-Mapping但沒有找到我做錯了什麼。

我的班級出了什麼問題?

+0

返回什麼JSON? – Wain 2013-04-29 23:10:42

+0

@JSON是:{ 「章節」:「/ api/v1/chapter/2 /」, 「id」:2,「 pub_date」:「2013-04-25T19:23:42.930097」, 「問題」:「Quelle est la capitale de ce pays:Emirats Arabes Unis?」, 「resource_uri」:「/ api/v1/question/2 /」 } – ltbesh 2013-04-30 11:45:18

回答

0

嘗試啓用跟蹤日誌記錄,以獲得更多的細節關於做什麼用的映射發生的事情:

RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelTrace); 

這就是說,我不知道它是與映射的問題。嘗試從字符串對象讀取問題時引發異常。 RestKit不應該基於你的用例來做這件事。因此,您需要在所有異常中添加一個斷點,以便您可以看到完整的堆棧跟蹤並找出發生了什麼事情:Xcode adding an exception breakpoint

看着你的JSON和映射規範似乎沒問題。

相關問題