gpt4 book ai didi

objective-c - RestKit 对象映射失败取决于属性名称

转载 作者:行者123 更新时间:2023-11-28 22:45:47 25 4
gpt4 key购买 nike

我看到 RestKit 和映射对象有一些奇怪的行为。在我的目标对象中,如果我有一个名为“描述”的 NSString * 属性,那么整个映射都会失败。将其更改为任何其他名称,或将其注释掉,一切都会成功。无论我是否为该属性设置了 map ,都会发生这种情况,并且我可以在简单的测试类中重现它。

服务器返回的 JSON:

{
id = 1;
name = item1;
},
{
id = 2;
name = item2;
}

我要映射到的对象,SimpleObject.h。请注意,描述和不存在的属性都不在 JSON 中,这意味着我不认为这是因为缺少“描述”:

#import <Foundation/Foundation.h>

@interface SimpleObject : NSObject

@property (nonatomic, assign) NSInteger identifier;
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *description;
@property (nonatomic, retain) NSString *nonexistant;

@end

简单对象.m:

#import "SimpleObject.h"

@implementation SimpleObject

@synthesize identifier;
@synthesize name;
@synthesize description;
@synthesize nonexistant;

@end

我在 AppDelegate 中创建映射:

RKObjectManager *objectManager = [RKObjectManager managerWithBaseURLString:@"http://127.0.0.1/test"];

// Setup our object mappings
RKObjectMapping *testMapping = [RKObjectMapping mappingForClass:[SimpleObject class]];
[testMapping mapKeyPath:@"id" toAttribute:@"identifier"];
[testMapping mapKeyPath:@"name" toAttribute:@"name"];

// Register our mappings with the provider using a resource path pattern
[objectManager.mappingProvider setObjectMapping:testMapping forResourcePathPattern:@"/products"];

在我的 didLoadObjects 方法中,我有:

- (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects
{
NSLog(@"Loaded products: %@", objects);

SimpleObject *obj = [objects objectAtIndex:0];
NSLog(@"Loaded product ID %d -> Name: %@ ", obj.identifier, obj.name);
}

这个输出:

Finished performing object mapping. Results: {
"" = (
(null),
(null)
);
}

如果我注释掉 description 属性(但不存在),那么一切正常:

Finished performing object mapping. Results: {
"" = (
"<SimpleObject: 0x8a4d040>",
"<SimpleObject: 0x8a50130>"
);
}

仅此属性名称的映射失败是否有原因?如果我将名称更改为“描述”以外的任何名称,它也会成功。

最佳答案

它与 NSObject 的描述属性冲突。将其重命名为其他(如 desc)。

关于objective-c - RestKit 对象映射失败取决于属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13244141/

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