Swiftからプロジェクトを変換したばかりです2.2 to 3.0、私はテストでスローされた新しい例外を取得しています。私は、ファイルから、いくつかのJSONを読み込み私のテストのいずれかで、いくつかのObjective Cのコードがあります:私はいくつかのスウィフトコードからこれを呼んでいるSwift 3 NSDictionaryからDictionaryへの変換でNSInvalidArgumentExceptionが発生する
+ (NSDictionary *)getJSONDictionaryFromFile:(NSString *)filename {
/* some code which checks the parameter and gets a string of JSON from a file.
* I've checked in the debugger, and jsonString is properly populated. */
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
return jsonDict;
}
を:
let expectedResponseJSON = BZTestCase.getJSONDictionary(fromFile: responseFileName)
これが最もうまくの作品時間のが、私は、エラーが発生し1つのJSON
ファイルを持っている:
failed: caught "NSInvalidArgumentException", "-[__NSSingleObjectArrayI enumerateKeysAndObjectsUsingBlock:]: unrecognized selector sent to instance 0x608000201fa0"
このことについて奇妙なことは、エラーが発生したということですgetJSONDictionaryFromFile
メソッドが返され、SwiftコードのexpectedResponseJSON
が入力されます。私には、これは問題であるNSDictionary
からDictionary
への変換であると言われています。問題のJSONファイルはこの1つである:私は[]
を囲む最も外側を削除した場合
[
{
"status": "403",
"title": "Authentication Failed",
"userData": {},
"ipRangeError": {
"libraryName": "Name goes here",
"libraryId": 657,
"requestIp": "127.0.0.1"
}
}
]
、このエラーが表示されなくなります。 Swift 3でJSONファイルの最上位エンティティとして配列を使用する唯一の人になることはできません。間違っていますか?このエラーを回避するにはどうすればよいですか?
もちろん、最上位のJSONオブジェクトとして配列を使用できます。しかし、辞書としてではなく配列として扱わなければなりません。 –