gpt4 book ai didi

ios - 此类对于使用 RestKit v0.20.0 的键文本不符合键值编码

转载 作者:行者123 更新时间:2023-11-29 11:00:36 25 4
gpt4 key购买 nike

2 天以来,我一直在尝试找出使用 iOS 6.1.3 与 Xcode 4.6.2 和 RestKit 0.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];
}

此时,我不知所措。

最佳答案

请在您的 btnSendClicked 方法中添加一个反向映射到您的 RKRequestDescriptor,如下所示:

RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor      
requestDescriptorWithMapping:[requestMapping inverseMapping]
objectClass:[SignalMessage class]
rootKeyPath:@""];

关于ios - 此类对于使用 RestKit v0.20.0 的键文本不符合键值编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16045772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com