我有一个带缩略图的UICollectionView。当用户同时选择一个或多个图像时,我必须使用键和值创建NSDictionary。密钥必须是特定名称。这是我需要得到的最终结果。
(
image[0] = 75829457,
image[1] = 03480923,
image[2] = 58924589
)
这里的值显然是图像ID。我怎样才能做到这一点?我需要通过POST请求发送NSDictionary,这不是问题。
任何帮助都将不胜感激。
谢谢。
答案 0 :(得分: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;
}
将该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];
}
为您的请求设置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请求并发送它,然后清空可变字符串。