2

我是restkit的新手,我在我的应用程序中使用它以及核心数据。我对 restkit 处理核心数据的方式感到非常惊讶。这简直太棒了。但是我在解析我的一个网络服务时面临一个重大问题。该应用程序不断崩溃,并且无法从响应中映射值。以下是我的回应——

[ {“id”:10,“created”:“2012-10-06 13:32:09 +0000”,“createdBy”:null,“functionalCurrency”:null,“imageUrl”:null,“lat”:null ,“lon”:null,“maxOccupancy”:0,“name”:“Patio Dining”,“posX”:0,“posY”:0,“reportingCurrency”:null,“salesTaxRate1”:0,“salesTaxRate2”: 0,“salesTaxRate3”:0,“salesTaxRate4”:0,“timezone”:“-0830”,“transactionalCurrency”:null,“updated”:“2012-10-06 13:32:09 +0000”,“updatedBy “: 无效的}]

我收到以下错误。-

E restkit.object_mapping:RKObjectMappingOperation.m:262 将键路径“locationId”的属性映射到值 10 时验证失败。错误:操作无法完成。(Cocoa 错误 1610。)-[__NSCFNumber 长度]:无法识别的选择器发送到实例 0x774e020

我的位置类声明如下 -

@interface Location : NSManagedObject


@property (nonatomic,strong)NSNumber *locationId;
@property (strong, nonatomic) NSString *created;
@property (nonatomic,strong)  NSString *createdBy;
@property (nonatomic,strong)  NSString *functionalCurrency;
@property (nonatomic,strong)  NSString *imageUrl;
@property (strong, nonatomic) NSString *lat;
@property (strong, nonatomic) NSString *lon;

我按如下方式初始化管理器-

    RKURL *baseURL = [RKURL URLWithBaseURLString:serverUrl];

            objectManager = [RKObjectManager objectManagerWithBaseURL:baseURL];

            objectManager.client.baseURL = baseURL;

            objectManager.client.requestQueue.showsNetworkActivityIndicatorWhenBusy = YES;
[RKObjectManager setSharedManager:objectManager];

[objectManager loadObjectsAtResourcePath:[NSString stringWithFormat:@"%@", [URL resourcePath]] delegate:self];

当我尝试将 locationId 设置为 NSString 时,RKObjectManager 根本不匹配“9”之后的任何值。当设置为 NSNumber 时,它不匹配“2”之后的任何值。

请帮我。RKManagedObjectMapping 也发生了同样的事情,因此没有数据进入我的核心数据文件。

4

1 回答 1

5

嗯,这真的很尴尬,经过大量的头部撞击终于找到了问题所在。核心数据中我的 locationId 的最大值设置为 1。这导致了验证错误。

于 2012-10-23T07:14:30.963 回答