选中UICollectionViewCell时,使用键和值创建NSDictionary

时间:2013-07-09 18:04:57

标签: ios objective-c nsdictionary uicollectionview key-value

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

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

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

任何帮助都将不胜感激。

谢谢。

2 个答案:

答案 0 :(得分: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]];

答案 1 :(得分: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请求并发送它,然后清空可变字符串。