如何在 NSArray 中找到具有匹配键值的字典索引 - Swift


(
        {
        "date" = "23-02-2016";
        filename = "65.pdf";
    },
        {
        "date" = "23-02-2016";
        filename = "78.pdf";
    },
        {
        "date" = "23-02-2016";
        filename = "abc.pdf";
    }
)

我有一个这样的数组。我想找到文件名="abc.pdf"的字典索引。我怎样才能找到?我的数组是NSArray,字典是NSMutableDictionary。如果有人能指导我,那将是很大的帮助。

谢谢。。

var fileterArray: NSArray = yourArray.filteredArrayUsingPredicate(NSPredicate(format: "self.%@ contains[c] %@", "filename", "abc.pdf"))
for (NSInteger i=0;i<fileterArray.count:i++){
     NSInteger anIndex=[yourArray indexOfObject:[fileterArray objectAtIndex:i]];
     NSLog(@"%d",anIndex);
}

试试这个。

  NSIndexSet *indexes = [array indexesOfObjectsPassingTest:^BOOL(id obj,NSUInteger idx, BOOL *stop){
  NSString *s = (NSString*)obj;
  NSRange range = [s rangeOfString: searchString];
 return range.location != NSNotFound;
}];

我创建了示例 NSMutableDictionary 和 NSArray。使用谓词将"abc.pdf"文件名收集到 filterArray 中,并循环获取索引。

    let dic1 : NSMutableDictionary = NSMutableDictionary.init(object: "23-02-2011", forKey: "date");
    dic1.setValue("65.pdf", forKey: "filename");
    let dic2 : NSMutableDictionary = NSMutableDictionary.init(object: "23-02-2012", forKey: "date");
    dic2.setValue("65.pdf", forKey: "filename");
    let dic3 : NSMutableDictionary = NSMutableDictionary.init(object: "23-02-2013", forKey: "date");
    dic3.setValue("abc.pdf", forKey: "filename");
    let dic4 : NSMutableDictionary = NSMutableDictionary.init(object: "23-02-2014", forKey: "date");
    dic4.setValue("abc1.pdf", forKey: "filename");
    let dic5 : NSMutableDictionary = NSMutableDictionary.init(object: "23-02-2015", forKey: "date");
    dic5.setValue("abc.pdf", forKey: "filename");

    let testArray :NSArray = NSArray.init(array: [dic1,dic2,dic3,dic4,dic5]);
    let filterArray: NSArray = testArray.filteredArrayUsingPredicate(NSPredicate(format: "self.%@ contains[c] %@", "filename", "abc.pdf"));
    for(var i = 0; i < filterArray.count; i++) {
        let anIndex: NSInteger = testArray.indexOfObject(filterArray[i]);
        NSLog("%d",anIndex);
    }

如果字典值重复,它将为您提供过滤数组值,您将在此处获得所有值索引。

请尝试此片段。

  let fileArray = yourArray.valueForKey("filename")        
  let indexofDict = fileArray.indexOfObject("abc.pdf")
  print(indexofDict)

最新更新