2013-12-13 39 views
-1

後,我有一個映射,一些關鍵是零映射

@interface SynchObj : NSObject 


    @property (nonatomic, copy) NSString *name; 
    @property (nonatomic, assign) NSString *server_id; 
    @property (nonatomic, assign) NSString *app_id; 
    @property (nonatomic, strong) NSString *operation; 
    @property (nonatomic, strong) NSString *table; 
    @property (nonatomic, strong) NSString *event_data_s; 
    @property (nonatomic, strong) NSString *event_data_c; 
    @property (nonatomic, strong) NSString *fields; 
    @property (nonatomic, strong) NSString *msgStr; 
    @property (nonatomic, strong) NSString *code; 
    @property (nonatomic, strong) NSString *status; 

@end 

在我的映射類:

mappingDict = @{ 

            @"server_id" :@"server_id", 
            @"app_id"  :@"app_id", 
            @"operation" :@"operation", 
            @"table"  :@"table", 
            @"event_data_s" :@"event_data_s", 
            @"event_data_c" :@"event_data_c", 
            @"fields"  :@"fields", 
            @"status"  :@"status" 
            }; 
responseMapping = [RKObjectMapping mappingForClass:[SynchObj class]]; 
    [responseMapping addAttributeMappingsFromDictionary:mappingDict]; 

我收到Restkit

response.body={"response":{"operation":"create","status":"200","event_data_c":"2013-12-13 17:39:45","event_data_s":"2013-12-13 17:58:10","table":"MYTABLE","app_id":1,"server_id":31} 

但SERVER_ID以下響應屬性總是一個未定義或不正確的指針。 所有其他人都可以。 爲什麼?

+0

(幾乎)從來沒有「分配」對象!你想要使具有可變子類的對象幾乎總是「複製」。對於任何其他對象,使用「強」(大部分時間)或「弱」(對於IBOutlets,代表等)。只有'assign'原始類型。 – HAS

回答

3

我想象這是因爲你應該使用NSNumber *而不是NSString *server_id。對於app_id,也使用NSNumber,因爲JSON返回的不是字符串的整數。

編輯 -

廢料。這是因爲您使用assign而不是copy代替NSString,因此您不告訴編譯器值應該保留,導致在訪問對象之前釋放該對象。無論如何你仍然應該使用NSNumbers

@property (nonatomic, copy) NSString *name; 
@property (nonatomic, copy) NSNumber *server_id; 
@property (nonatomic, copy) NSNumber *app_id; 
@property (nonatomic, copy) NSString *operation; 
@property (nonatomic, copy) NSString *table; 
@property (nonatomic, copy) NSString *event_data_s; 
@property (nonatomic, copy) NSString *event_data_c; 
@property (nonatomic, copy) NSString *fields; 
@property (nonatomic, copy) NSString *msgStr; 
@property (nonatomic, copy) NSString *code; 
@property (nonatomic, copy) NSString *status; 
+0

真的,非常感謝。我根本沒有意識到這一點! – giuseppe