NSJSONSerialization 不解析 NSManagedObject
Posted
技术标签:
【中文标题】NSJSONSerialization 不解析 NSManagedObject【英文标题】:NSJSONSerialization doesn't parse NSManagedObject 【发布时间】:2013-11-01 15:58:42 【问题描述】:我需要生成 POST 数据的 JSON 并得到一个异常。
这是带有“records”键的字典,其中包含NSManagedObjects
的数组。
解析为json时似乎抛出异常。
NSData *postData = [NSJSONSerialization dataWithJSONObject:[super requestData] options:0 error:&error];
它失败并出现以下异常。知道为什么会这样吗?
'NSInvalidArgumentException', reason: 'Invalid type in JSON write (FTRecord)'
*** First throw call stack:
(
0 CoreFoundation 0x01aae5e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x018318b6 objc_exception_throw + 44
2 CoreFoundation 0x01aae3bb +[NSException raise:format:] + 139
3 Foundation 0x015760f0 _writeJSONValue + 771
4 Foundation 0x0157a470 ___writeJSONArray_block_invoke + 129
5 CoreFoundation 0x01b2b05d __53-[__NSArrayI enumerateObjectsWithOptions:usingBlock:]_block_invoke + 61
6 CoreFoundation 0x01b2af92 -[__NSArrayI enumerateObjectsWithOptions:usingBlock:] + 258
7 CoreFoundation 0x01aa80a5 -[NSArray enumerateObjectsUsingBlock:] + 53
8 Foundation 0x0157a381 _writeJSONArray + 275
FTRecord:
@interface FTRecord : NSManagedObject
@property (nonatomic) BOOL isRealEntry;
@property (nonatomic) NSTimeInterval timestamp;
@property (nonatomic, retain) NSString * notes;
@property (nonatomic) double orderingValue;
@property (nonatomic) int16_t rating;
@property (nonatomic) NSTimeInterval recordDate;
@end
【问题讨论】:
【参考方案1】:根据文档,NSManagedObject 不符合 NSJSONSerialization 的有效对象标准:
可以转换为 JSON 的对象必须具有以下内容 属性:
***对象是 NSArray 或 NSDictionary。所有对象都是 NSString、NSNumber、NSArray、NSDictionary 或 NSNull 的实例。全部 字典键是 NSString 的实例。数字不是 NaN 或 无穷大。
您可以致电isValidJSONObject:
进行测试
【讨论】:
以上是关于NSJSONSerialization 不解析 NSManagedObject的主要内容,如果未能解决你的问题,请参考以下文章
NSJSONSerialization 不解析 NSManagedObject
使用 NSJSONSerialization 解析 twitter 搜索 json 数据