【问题标题】:How to select specific index in NSMutableArray and stored in nsarray [closed]如何在 NSMutableArray 中选择特定索引并存储在 nsarray [关闭]
【发布时间】:2018-04-16 07:18:35
【问题描述】:

我开发了一个简单的应用程序,它使用 NSDictionary 将学生的姓名和 id 存储到 NSMutableArray 中,我只想在存储到 NSMutableArray 之后获取名称,而不是存储到 NSArray 中

这是我的简单代码

NSDictionary *student1 = [NSDictionary dictionaryWithObjectsAndKeys:
                          @"key1", @"id",
                          @"Joe", @"name",
                          nil];

NSMutableArray *array = [NSMutableArray arrayWithObjects:student1, nil];

请帮我解决这个问题。

【问题讨论】:

  • 有什么问题?
  • 我想在 NSMutableArray 中选择特定索引(仅限名称)并存储在 nsarray 中
  • 如果您提供一个您正在寻找的示例,可能会有所帮助。按名称搜索时,您想知道名称存储在字典数组中的索引吗?
  • 我正在寻找获取特定索引的值

标签: ios objective-c nsarray


【解决方案1】:

试试这个:

NSDictionary *student1 = [NSDictionary dictionaryWithObjectsAndKeys:
                          @"key1", @"id",
                          @"Joe", @"name",
                          nil];

NSMutableArray *array = [NSMutableArray arrayWithObjects:student1, nil];

NSMutableArray *mArr = [[NSMutableArray alloc]init];
for (NSDictionary *student in array) {
    [mArr addObject:[student objectForKey:@"name"]];
}
NSArray *arr = mArr;
NSLog(@"%@",arr);    //OUTPUT: (Joe)

【讨论】:

  • 我试过了,但它显示以下内容: *** 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
  • 请显示您的代码,并告诉我它在哪一行崩溃...错误消息说您正在尝试插入一个 nil 对象
【解决方案2】:

所以,如果您要在特定索引处查找名称(Objective-c)

NSDictionary *student = array[SPECIFIC_INDEX];

NSString *name = student[@"name"];

【讨论】:

    【解决方案3】:

    关于您的问题,假设您有一组学生词典(id 和 name)并尝试根据 name 过滤数组。

    for dic in array as! [NSDictionary] {
       if dic.objectForKey("name") as! String == "searchyournamehere"
       {
            //name matched perform your operation here
       }
    }
    

    缺点:由于多个学生可能具有相同的姓名,因此最好根据 id 过滤数组(假设它是唯一的),但是您正在搜索具有相同姓名的多个学生,上面的代码将有所帮助。

    【讨论】:

    • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation 将通过展示为什么这是解决问题的好方法,并使其对有其他类似问题的未来读者更有用,从而大大提高其长期价值。请edit您的回答添加一些解释,包括您所做的假设。
    • @Melebius,更新了答案,希望现在可以澄清这个想法
    猜你喜欢
    • 2012-07-31
    • 2017-10-28
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 2014-06-24
    相关资源
    最近更新 更多