2012-10-22 5 views
0

여러 소스에서 여러 요청을하고 있는데,이 때문에 아래의 생성 된 NSArray resultsTwitter에 'newsSource "= twitter (JSON 형식)와 같은 속성을 추가하고 싶습니다. 이유는 각 "뉴스 항목"을 고유하게 처리 할 수 ​​있기를 원하기 때문입니다.blockoppertion (AFNetwork)에서 배열의 객체에 속성을 추가 할 수 있습니까?

저는 블록을 처음 사용 합니다만,이 기능을 "즉시"할 수있는 쉬운 방법 일 수 있다고 생각합니까? 블록 작업에서 가능하지 않은 경우 작업 후 수행 방법에 대한 제안이 있습니까?

// Fetch data from Twitter (json complient) 
NSURLRequest *request = [NSURLRequest requestWithURL:urlTwitter]; 
AFJSONRequestOperation *operation; 
operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request 
                  success:^(NSURLRequest *req, NSHTTPURLResponse *responce, id jsonObject) { 
                   NSLog(@"Responce: %@",jsonObject); 
                   self.resultsTwitter = [jsonObject objectForKey:@"results"]; 
                   [self.tableView reloadData];  
                  } 
                  failure:^(NSURLRequest *req, NSHTTPURLResponse *responce, NSError *error, id jsonObject) { 
                   NSLog(@"Recieved an HTTP %d", responce.statusCode); 
                   NSLog(@"The error was: %@",error); 
                  }]; 

[operation start]; 

답변

0

내가 제대로 질문을 이해하지 않을 수 있지만, 처음에 채워 후 한 resultsTwitterNSMutableArray 한, 당신이 (당신의 경우 단일 KVP과 NSDictionary에) 객체를 추가 할 수 있습니다. 같은

뭔가 : 블록 내에서 액세스 할 수있는 변수를 인스턴스의

[resultsTwitter addObject:[NSDictionary dictionaryWithObjectsAndKeys: 
          @"twitter", @"newsSource", 
          nil]]; 

예 :

__block NSString *newssource = @""; 

NSURLRequest *request = [NSURLRequest requestWithURL:urlTwitter]; 
AFJSONRequestOperation *operation; 
operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request 
                  success:^(NSURLRequest *req, NSHTTPURLResponse *responce, id jsonObject) { 
                   NSLog(@"Responce: %@",jsonObject); 
                   self.resultsTwitter = [jsonObject objectForKey:@"results"]; 
                   [self.tableView reloadData]; 
                   newssource = @"twitter"; 


                  } 
                  failure:^(NSURLRequest *req, NSHTTPURLResponse *responce, NSError *error, id jsonObject) { 
                   NSLog(@"Recieved an HTTP %d", responce.statusCode); 
                   NSLog(@"The error was: %@",error); 
                  }]; 

[operation start]; 
+0

감사합니다. ElJay, 좋은 팁 "거의"내가 원하는 것. 하지만 실제로 ** 속성 **을 객체에 추가하고 그 속성 인 "newssource"에 내용 "twitter"를 채워 넣으려고합니다. 블록 내에서 가능하지 않으면 작업이 완료된 후 모든 개체를 반복하고이 속성을 모두 추가합니다. 미안하다면 미안해. – Mac

+0

변수를 추가하고 __block을 사용하여 블록 내부에서 검색하고 업데이트 할 수 있습니다. 내 대답을 예제로 업데이트했습니다. –

+0

니스! 이것을 정확히 이해하고, 배열에 넣기 전에 가져 오는 모든 객체에 newssource 속성을 직접 추가 할 것입니까? – Mac

0

모든 뉴스 항목의 동작을 캡슐화하는 모델 클래스를 만듭니다.

이 패턴은 AFNetworking 예제 응용 프로그램에서 사용되며 각 App.net 게시는 모델 개체에 해당하며 JSON에서 초기화됩니다. 항목을 표현하는 수단으로 모델 객체가 아닌 변경 가능한 사전을 사용하지 말 것을 강력히 권합니다.

관련 문제