編碼符合密鑰文本的關鍵值現在,我一直在試圖找出爲什麼我使用iOS 6.1.3和Xcode 4.6來獲取錯誤。 2和RestKit 0.20.0:這個類不是使用RestKit v0.20.0
「...此類別不是關鍵字符合關鍵字文字的值。」
奇怪的是我可以接收(GET)JSON對象。當我創建我的示例SignalMessage對象並嘗試將其重新放回服務器時,會發生錯誤。
的JSON如下:
{"Text":"New Message","HasMessage":"true"}
的SignalMessage對象看起來是這樣的:
#import <Foundation/Foundation.h>
@interface SignalMessage : NSObject {
}
@property (nonatomic, copy) NSString *signalText;
@property (nonatomic, retain) NSNumber *isHasMessage;
@end
而像這樣實現:
#import "SignalMessage.h"
@implementation SignalMessage
@synthesize isHasMessage, signalText;
@end
我的正常工作GetMessage函數看起來像這樣:
- (IBAction)getMessage:(id)sender;
{
NSLog(@"%@", @"Getting message... ");
NSURL *url = [NSURL URLWithString:@"http://ec2-54-243-148-145.compute-1.amazonaws.com/TabletPractice/api/signal?clientIdentifier=2"];
RKObjectManager *manager = [RKObjectManager managerWithBaseURL:url];
RKObjectMapping *responseMapping = [RKObjectMapping mappingForClass:[SignalMessage class]];
[responseMapping addAttributeMappingsFromDictionary:@{@"Text":@"signalText", @"HasMessage": @"isHasMessage"}];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping pathPattern:nil keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[manager addResponseDescriptor:responseDescriptor];
[manager getObject:nil path:@"" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *result)
{
NSArray *theresults = [result array];
for (SignalMessage *item in theresults) {
self.txtMessage.text = item.signalText;
[self hideControls];
}
} failure:^(RKObjectRequestOperation * operation, NSError * error)
{
NSLog (@"Server WS call failure: operation: %@ \n\nerror: %@", operation, error);
}];
}
這裏是sendClicked消息,讓我傷心:
- (IBAction)btnSendClicked:(id)sender;
{
if ([txtMessage.text length] < 1)
return;
NSURL *url = [NSURL URLWithString:@"http://ec2-54-243-148-145.compute-1.amazonaws.com/TabletPractice/api/signal?clientIdentifier=2"];
RKObjectManager *manager = [RKObjectManager managerWithBaseURL:url];
RKObjectMapping *requestMapping = [RKObjectMapping requestMapping];
[requestMapping addAttributeMappingsFromDictionary:@{@"Text":@"signalText", @"HasMessage": @"isHasMessage"}];
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping
objectClass:[SignalMessage class]
rootKeyPath:@""];
[manager addRequestDescriptor:requestDescriptor];
SignalMessage *newMessage = [[SignalMessage alloc] init];
newMessage.signalText = @"Test Message";
BOOL isMsg = TRUE;
NSNumber *boolAsNumber = [NSNumber numberWithBool:isMsg];
newMessage.isHasMessage = boolAsNumber;
[manager putObject:newMessage path:@"" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
NSLog(@"We object mapped the response with the following result: %@", result);
} failure:^(RKObjectRequestOperation * operation, NSError * error)
{
NSLog (@"Server WS call failure: operation: %@ \n\nerror: %@", operation, error);
}];
[self hideControls];
}
在這一點上,我很茫然。
您可以包含錯誤信息的地方說:** **這是類不符合的部分? – Tobi