1

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

FTレコード:

@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
4

1 に答える 1

1

ドキュメントから、NSManagedObject は有効なオブジェクトに対する NSJSONSerialization の基準を満たしていません。

JSON に変換できるオブジェクトには、次のプロパティが必要です。

最上位オブジェクトは NSArray または NSDictionary です。すべてのオブジェクトは、NSString、NSNumber、NSArray、NSDictionary、または NSNull のインスタンスです。すべての辞書キーは NSString のインスタンスです。数値は NaN または無限大ではありません。

呼び出すことでこれをテストできますisValidJSONObject:

于 2013-11-01T16:03:23.290 に答える