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