2013-11-01 2 views
1

POST 데이터의 JSON을 생성하고 예외를 가져와야합니다.NSJSONSerialization은 NSManagedObject를 구문 분석하지 않습니다.

NSManagedObjects의 배열이 포함 된 "레코드"키가있는 사전입니다.

json으로 구문 분석 할 때 예외가 발생하는 것으로 보입니다.

NSData *postData = [NSJSONSerialization dataWithJSONObject:[super requestData] options:0 error:&error]; 

enter image description here

은 다음 예외로 실패. 왜 이런 일이 일어나는 지 아십니까?

'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:

를 호출하여 테스트 할 수 있습니다