-1

我有一个带有缩略图的 UICollectionView。当用户同时选择一个或多个图像时,我必须使用键和值创建 NSDictionary。密钥必须是特定名称。这是我需要得到的最终结果。

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

这里的值显然是图像 ID。我怎样才能做到这一点?我需要通过 POST 请求发送该 NSDictionary,这不是问题。

任何帮助,将不胜感激。

谢谢你。

4

2 回答 2

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. 将该dict转换为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 Body

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

于 2013-07-09T22:02:10.837 回答
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 请求并发送它,然后清空可变字符串。

于 2013-07-09T20:45:44.690 回答