0

だから、私は iOS 向けの開発は本当に初めてで、答えを探したり、デバッグしたり、思いついたことは何でもできるように最善を尽くしてきました。

しかし、私は問題の解決策を見つけることができませんでした。

私は外部の JSON ドキュメントを取得しようとしてきましたが、これは正常に動作しますが、解析する際に問題が発生します。

まず第一に、これは私が得ているエラーメッセージです。

2013-01-31 22:40:19.261 demodh[6205:c07] View Loaded
2013-01-31 22:40:19.479 demodh[6205:c07] -[__NSCFStringcountByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x7554f90 
2013-01-31 22:40:19.480 demodh[6205:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x7554f90'
*** First throw call stack:
(0x1c93012 0x10d0e7e 0x1d1e4bd 0x1c82bbc 0x1c8294e 0x28d3 0xbd6589 0xbd4652 0xbd589a 0xbd460d 0xbd4785 0xb21a68 0x4615911 0x4614bb3 0x4652cda 0x1c358fd 0x465335c 0x46532d5 0x453d250 0x1c16f3f 0x1c1696f 0x1c39734 0x1c38f44 0x1c38e1b 0x1bed7e3 0x1bed668 0x14ffc 0x1d6d 0x1c95 0x1)
libc++abi.dylib: terminate called throwing an exception
(lldb) 

そして、これは私が現在使用しているコードです:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSDictionary *allDataDictionary = [NSJSONSerialization JSONObjectWithData:webData options:0 error:nil];

    for(NSDictionary *dict in allDataDictionary)
    {
        if (![allDataDictionary isKindOfClass:[NSDictionary class]])
        {
            NSLog(@"2Unable to process temp array because it's an instance of %@", [allDataDictionary class]);
        }
        else
        {
            for(NSDictionary *deal in dict)
            {
                if (![deal isKindOfClass:[NSDictionary class]])
                {
                    NSLog(@"Unable to process temp array because it's an instance of %@", [deal class]);
                }
                else
                {
                    NSString *title = [deal objectForKey:@"title"];
                    NSLog(title);
                }
            }
        }

    }
}

そして、私がロードしている JSON は次のとおりです:リンク

解決策を見つけるお手伝いができれば幸いです。

4

1 に答える 1

2

NSDictionary問題は、実際にはキーを取得するときに、 a を高速に列挙し、その値を取得することを期待していることです。高速列挙しようとすると、NSString見ているアサーションが得られます。あなたはおそらくこれを望んでいました:

for(NSObject *key in allDataDictionary) {
    NSDictionary *dict = allDataDictionary[key];
    ...
    for (NSObject *dealKey in dict) {
         NSDictionary *deal = dict[dealKey];
    }
    ...

または、本当に値を列挙したいがキーが必要ない場合:

for(NSDictionary *dict in [allDataDictionary allValues]) {
    ...
于 2013-01-31T22:08:57.243 に答える