我使用Stig Brautaset的JSON序列化框架的一些對象,包括NSDates(不直接支持)。的NSDate的initWithString:將返回零
我決定使用的NSDate的描述爲日期的JSONFragment表示(我不關心這樣做所產生的精密微小的損失)。
爲了延長Stig Brautaset的JSON框架包括NSDates,我中定義的類別:
@interface NSDate (NSDate_JSON) <JSONInitializer>
-(NSString *) JSONFragment;
@end
要重新創建從JSON一個NSDate(和其它類),I定義的協議具有以下初始化:
@protocol JSONInitializer <NSObject>
-(id) initWithJSONRepresentation: (NSString *) aJSONRepresentation;
@end
我遇到了這個初始值設定項的問題。在NSDate的情況下,它只是調用initWithString :,這就是我陷入困境:它總是返回nil。這是執行:
#import "NSDate+JSON.h"
@implementation NSDate (NSDate_JSON)
-(NSString *) JSONFragment{
NSString *strRepr = [self description];
return [strRepr JSONFragment];
}
-(id) initWithJSONRepresentation:(NSString *)aJSONRepresentation{
return [self initWithString: aJSONRepresentation]; //returns nil!
}
@end
我不知道發生了什麼事。此外,編譯器警告我initWithJSONRepresentation中的initWithString:方法無法找到。
有人知道可能會發生什麼嗎?
爲測試條件下的完整源代碼可here。
'aJSONRepresentation'看起來像什麼? – 2011-04-29 21:57:09
這與NSDate的說明完全一樣 – cfischer 2011-04-29 23:41:04
實際上並非如此。 – 2011-04-29 23:43:47