-1

みなさん、良い一日を!私がしていることの何が問題なのかを尋ねたいだけです。私はこれで2日間働いていますが、まだうまくいきません。「認識されないセレクターがインスタンス 0x748b800 に送信されました」と表示されます。私がやっていることは、json の戻り値を解析することです。以下は、json の戻り値のサンプルです。

{
   "data": [
      {
         "name": "John Patola",
         "id": "123444432"
      },
      {
         "name": "Joshua Valdez",
         "id": "22234567778"
      }
]
}

それらを という配列に格納したいと思い NSArray *storageます。以下は私のコードです:

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[self.rData appendData:data];
}
-(void)connection: (NSURLConnection *)connection didFailWithError:(NSError *)error{
[rData release];
[connection release];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
NSString *myVar = [[[NSString alloc] initWithData:rData encoding:NSUTF8StringEncoding] autorelease];
NSArray *storage =[[(NSDictionary *)myVar objectForKey:@"data"]retain]; // this line seems to be the error
NSLog(@"%i", [storage count]);

このコードを実行すると、「認識されないセレクターがインスタンス 0x748b800 に送信されました」というエラーが表示されました。私がマークした行は本当にエラーになると思いますか? どうすれば修正できますか?よろしくお願いいたします。;-)

4

2 に答える 2

1

JSONプロジェクトにキットを追加します。

viewController.hファイルでメソッドを宣言します

-(void)JsonParsing:(NSString *)string;

次にインポート

#import "SBJSON.h"
#import "JSON.h"

あなたのviewController.mファイルと

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [self.rData appendData:data];
}
-(void)connection: (NSURLConnection *)connection didFailWithError:(NSError *)error
{
    [rData release];
    [connection release];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
 {
    NSString *theXMLString = [[NSString alloc]initWithBytes:[self.rData mutableBytes] length:[self.rData length] encoding:NSUTF8StringEncoding];
    [self JsonParsing:theXMLString];
 }

次に、ここで文字列を解析します-

-(void)JsonParsing:(NSString *)string
{
    SBJSON *jsonObject = [[SBJSON alloc]init];
    NSArray *dataArray = [[NSArray alloc]init];
    dataArray = [jsonObject objectWithString:string];
    NSLog(@"%d", [dataArray count]);

}
于 2012-09-11T08:34:10.707 に答える
0

これを行う:

 -(void)connectionDidFinishLoading:(NSURLConnection *)connection{

   NSError *error = nil;
   NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData: rData options: NSJSONReadingMutableContainers error: &error];

   if (!jsonArray) {
      NSLog(@"Error parsing JSON data: %@", e);
   } else 
   {
      NSArray *arrValues = [jsonDict objectForKey:@"data"];
      for(NSDictionary *item in arrValues) {
      NSLog(@"Item: %@", item);
   }
}
于 2012-09-11T08:32:45.280 に答える