【问题标题】:Create NSDictionary with keys and values when selected UICollectionViewCell选择 UICollectionViewCell 时使用键和值创建 NSDictionary
【发布时间】:2013-07-10 06:02:10
【问题描述】:

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

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

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

任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 这似乎是一个数组,而不是字典。
  • 好的,然后是数组。问题是如何?
  • 恐怕我不太明白你的问题。您可以使用NSArray *arr = @[ @9273535, @3651537894, @51436393 ];... 创建一个数组
  • 如果你要打印出来,字典在终端{ key1 = value1; key2 = value2; }中看起来像下面这样
  • 如何得到它取决于你的数据结构是什么——如果没有更多信息,我们无法回答这个问题。

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


【解决方案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]];

【讨论】:

    【解决方案2】:

    在你的控制器中,声明一个成员变量 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 请求并发送它,然后清空可变字符串。

    【讨论】:

    • 我拥有的唯一数据是图片 id 的对象值。 Web 服务希望我发送一个没有 JSON 的基本帖子 - 像这样:"image[0]=123&amp;image[1]=345&amp;image[2]=876"。我想我可以通过字典得到它。你知道如何帮助我吗?
    • 我在输出 nsmutablestring 时得到 (null)。
    • 在将参数字符串附加到可变字符串之前,您是否尝试过检查它?
    • 是的,没关系。它按我想要的方式输出。老实说,当我声明 NSMutableString 时,您告诉我将其设置为空,但这也给了我错误,所以我没有将其设置为空。
    • 对不起,我的错。我忘了初始化 MutableString。我在这里遇到的唯一问题是,如果用户选择随机图像,它会给我这样的信息:"image[3]=345&amp;image[8]=543&amp;image[0]=775"。它不在顺序中。我会尝试将它发送到网络服务,看看它是否像那样工作,并会让你知道。除非你有其他想法。我必须感谢您的所有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2017-01-15
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    相关资源
    最近更新 更多