2012-01-02 8 views
1

SBJSONを使用して、NSDictionaryをiOSアプリケーションのJSON Stringに変換しています。NSDataまたはNSAttributedString with SBJSON

辞書にNSAttributedStringまたはNSDataが含まれている場合、SBJSONは文字列表現を生成できません。 NSAttributedStringの包みなさい

、エラーは次のとおりです。

-JSONRepresentationに失敗しました。エラートレースがある:JSONのシリアライズはNSDataのの包みなさいNSConcreteMutableAttributedString \

のためにサポートされていません "\エラードメイン= org.brautaset.JSON.ErrorDomainコード= 1"( 、エラーは次のとおりです。

- JSONRepresentationに失敗しましたエラーのトレースは、次のとおりです。( "エラードメイン= org.brautaset.JSON.ErrorDomainコード= 1 \" JSONのシリアル化がNSConcreteMutableData \でサポートされていません " のUserInfo = 0x7ed2560 {NSConcreteMutableDataのためにサポートNSLocalizedDescription = JSONシリアライズない }"

2つの問題のうちの少なくとも1つを解決することは、非常に重要です。 助けてください。

おかげ Roshit

+0

NSDataまたはNSAttributedStringオブジェクトにはどのようなものがありますか?それは文字列としてシリアライズ可能ですか? –

+0

NSAttributedStringは高度にフォーマットされた文字列です。のように、テキストは異なるインデックスで異なる属性でフォーマットされます。 NSDataは、NSAttributedStringのデータ表現です。データ表示は[link](https://devforums.apple.com/message/340283#340283)のようなコードを使用して取得しました – Roshit

+0

回答の1つを受け入れてください。彼らは妥当と思われる。または、私たちがさらにあなたを助けるための追加情報を提供してください。 –

答えて

2

JSONはあなたが欲しいものを行うには任意のデータ型を持っていませんが、Base64でエンコードされた文字列へのNSDataを変換することができます。これは、-proxyForJsonメソッドを実装するNSDataのカテゴリを使用して自動的に行うことができます。問題は、反対側のNSDataに変換する必要がある場合です。キーがわかっている場合は、Base64でそのキーをデコードできます。しかし、データ部分がどんなキーにも対応できるならば、少し難しくなります。何らかの理由でデータを構造化して、どの文字列をBase64でデコードするかを決定する必要があります。

+0

Uが救われました.. Base64が鍵だった..ありがとう... :) – Roshit

1

NSDataオブジェクトを渡すことはできません。問題の解決策は、次の行を使用して(nsdataオブジェクトへの応答を変更する)、その文字列を値として使用することです。

NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; 

NSAttributedStringも値として渡すことはできません。 NSAttributedStringをNSStringに変更する必要があります。詳細については、OHAttributedLabel libをチェックしてください。