2

アップデート:

以前のエラーの理由はドキュメントのエラーであることがわかりました。

メソッドは、jsonProxyObject ではなく、proxyForJson という名前にする必要があります...

しかし、私はまだ立ち往生しています。

stringWithObject のどこかで EXC_BAD_ACCESS エラーが発生するようになりました。手がかりはありますか?


更新 2:

私のproxyForJson実装は、当時のドキュメントからのカットアンドペーストです:

- (id)proxyForJson {
    return [NSDictionary dictionaryWithObjectsAndKeys:
            Navn, @"Navn",
            Adresse, @"Adresse",
            Alder, @"Alder",
            nil];
}

カスタムの Objective-C クラスで json シリアライゼーションを機能させようとしています。

ドキュメントを理解しているように、 jsonProxyObjectメソッドを実装している場合、json-framework はカスタム オブジェクトをシリアル化できます。

だから私はこのクラスを持っています:

@interface MyObject : NSObject {
    NSString *Name;
    NSString *Addresse;
    NSInteger Age;
}
@property (nonatomic, retain) NSString *Name;
@property (nonatomic, retain) NSString *Addresse;
@property (nonatomic, assign) NSInteger Age;
- (id)jsonProxyObject;
@end

そして、いくつかのインスタンスを含む配列をシリアライズしようとします:

[json stringWithObject:list error:&error];

しかし、私が得るのは彼が次のエラーです:

「JSON シリアライゼーションは MyObject ではサポートされていません」

何らかの理由で jsonWriter が jsonProxyObject メソッドを見つけられないと思います。

よろしく。

4

3 に答える 3

0

EXC_BAD_ACCESSのソースを確認するために、実行可能情報ペインでNSZombiesとMallocStackLoggingをオンにしようとしましたか?そうでない場合は、これを試して、コンソールの出力を確認してください。EXC_BAD_ACCESSは、多くの場合、どこかでオブジェクトを過剰に解放することによって引き起こされるエラーです。

于 2010-01-07T21:10:50.667 に答える
0

これが正しいことかどうかはわかりませんが、クラスを次のように定義すると、問題が解決します。

@interface MyObject : NSObject {
    NSString *Name;
    NSString *Addresse;
    NSInteger *Age;
}

@property (nonatomic, retain) NSString *Name;
@property (nonatomic, retain) NSString *Addresse;
@property (nonatomic, retain) NSInteger *Age;

- (id)jsonProxyObject;

@end

次に、変数を次のように初期化します。

Age = [[NSNumber alloc] initWithInt:32];
于 2010-04-18T08:27:39.420 に答える
0

NSString にはstringWithObject:メソッドはありません。stringWithFormat:代わりに使用してみてください。

于 2012-06-29T14:05:54.830 に答える