2013-07-09 21 views
-1

我有一個帶有縮略圖的UICollectionView。當用戶同時選擇一個或多個圖像時,我必須使用鍵和值創建NSDictionary。密鑰必須是特定的名稱。這是我需要得到的最終結果。選擇時使用鍵和值創建NSDictionary UICollectionViewCell

(
image[0] = 75829457, 
image[1] = 03480923, 
image[2] = 58924589 
) 

這裏的值顯然是圖像id。我怎樣才能做到這一點?我需要通過POST請求發送NSDictionary,這不是問題。

任何幫助,將不勝感激。

謝謝。

+0

這似乎是一個數組,而不是字典。 – 2013-07-09 18:08:39

+0

好吧,然後數組。問題是如何? – SasaT

+0

恐怕我不明白你的問題。你可以使用'NSArray * arr = @ [@ 9273535,@ 3651537894,@ 51436393];'... – 2013-07-09 18:17:28

回答

0

在你的控制器中,聲明一個成員變量NSMutableString * mutableString。初始化init方法中的mutableString爲空。

- (void)collectionView:(UICollectionView *)aCollectionView didSelectItemAtIndexPath:(NSIndexPath)indexPath { 
    NSString *key = [NSString stringWithFormat:@"image[%d]", [indexPath row]]; 
    NSString *value = // get the picture id 
    NSString *parameter = [NSString stringWithFormat:@"%@=%@", key, value]; 

    if ([mutableString length] != 0) 
     [mutableString appendString:@"&"]; 

    [mutableString appendString:parameter]; 
} 

然後使用IBAction來確認選擇,構建您的POST請求併發送它,然後清空可變字符串。

+0

我唯一的數據是圖片ID的對象值。 Web服務期待我發送一個基本的帖子,而不用JSON--像這樣:''image [0] = 123&image [1] = 345&image [2] = 876「'。我以爲我可以通過字典得到它。你知道你如何能幫助我嗎? – SasaT

+0

已更新的答案。 – rocky

+0

當我輸出nsmutablestring時,我得到(null)。 – SasaT

1
  1. 創建一個方法來獲得ImageDictionary

    - (NSDictionary *) dictionaryWithImageArray:(NSArray *)imageArrayID { NSMutableDictionary *imageDict = [[NSMutableDictionary alloc] init]; for (int i=0; i<[imageArrayID count]; i++) { [imageDict setObject:[imageArrayID objectAtIndex:i] forKey:[NSString stringWithFormat:@"image[%d]",i]]; } return imageDict; }

  2. 轉換是快譯通到JSON字符串 NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:<Dict from above> options:NSJSONWritingPrettyPrinted error:&error]; NSString *jsonString= nil; if (! jsonData) { NSLog(@"Got an error: %@", error); jsonString = @""; } else { jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; }

  3. 設置HTTP主體爲您的要求

    [request setHTTPBody: [jsonString dataUsingEncoding:NSUTF8StringEncoding]];