Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何根据第二个字符串数组的内容筛选一个字符串数组 解决了,我无法选择自己的答案_Ios_Objective C_Arrays_Json_Filter - Fatal编程技术网

Ios 如何根据第二个字符串数组的内容筛选一个字符串数组 解决了,我无法选择自己的答案

Ios 如何根据第二个字符串数组的内容筛选一个字符串数组 解决了,我无法选择自己的答案,ios,objective-c,arrays,json,filter,Ios,Objective C,Arrays,Json,Filter,我有一个从JSON加载到NSMutableArray的数组。其中一个条目,AllowedTo,其值为New York,Florida 我还有第二个数组,它从一个单独的JSON到一个新的NSMutableArray,使用这个数组,我填充了一个UITableView: 使用第一个数组,我想隐藏第二个数组中不匹配的任何单元格。例如,最终结果(使用上面发布的图像)只有3个单元格(GRAND TOTAL、纽约、佛罗里达),其余单元格(JUNIORS、FOODNATION等)将被隐藏 下面是一个示例,说明如

我有一个从
JSON
加载到
NSMutableArray
的数组。其中一个条目,
AllowedTo
,其值为
New York,Florida

我还有第二个数组,它从一个单独的
JSON
到一个新的
NSMutableArray
,使用这个数组,我填充了一个
UITableView


使用第一个数组,我想隐藏第二个数组中不匹配的任何单元格。例如,最终结果(使用上面发布的图像)只有3个单元格(GRAND TOTAL、纽约、佛罗里达),其余单元格(JUNIORS、FOODNATION等)将被隐藏

下面是一个示例,说明如何使用

然后我将为此创建一个函数,这样您就可以根据需要调用它,而无需更改原始数组

func filterDataSource(arrayOne: [String], arrayTwo: [String]) -> [String] {

    let filteredArray = arrayOne.filter({ arrayTwo.contains($0)})

    return filteredArray

}

编辑

与Objective-C中的功能相同,还有更优雅的方法,但我有点生疏:)



您也可以使用集合:

NSMutableSet *dataToShow = [NSMutableSet setWithArray:yourFirstArray];
NSSet *other = [NSSet setWithArray:yourSecondArray];
[dataToShow intersectSet:other];
现在,“dataToShow”只有两个数组中存在的项

编辑

例如:

阵列1具有“1”、“2”、“3”、“4”

Array2有“1”、“4”、“5”

Set1将具有数组1的元素,但顺序可能不同:“2”、“4”、“3”、“1”

第2组相同:“4”、“1”、“5”

相交集“dateToShow”将包含元素“1”和“4”,因为这两个元素是两个集中唯一存在的元素


但是,订单无法保证,因此如果这对您很重要,我建议[dataToShow.allObjects sortedarray使用Comparator….]所以,我的看法是错误的。我的意图是将JSON解析到数组中,然后去掉我不需要的内容。当用我想显示的内容填充数组更简单时,我在JSON解析器的末尾添加了这个

if ([AllowedTo containsString:newEstNet.EntityName]) {
    NSLog(@"%@ displayed", newEstNet.EntityName);
    [listOfEstNetGrand addObject:newEstNet];
} else {
    NSLog(@"%@ not displayed", newEstNet.EntityName);
    // dont add the object to the array
}

似乎您的问题是关于使用数组,而不是UITableView,是吗?如果是,请重新表述您的问题-删除任何不需要的内容(如表视图)如果你指的是标签,我使用了推荐的任何东西。我会在我认为合适的时候删除它。很抱歉,有可能会有obj-c版本。我还没有研究swiftone的小问题,主要是我的错,两个可变数组都是字典。我如何在字典中获取数组的字符串,例如arrayOne.AllowedTo。。…编辑:我发疯了。我知道这一个。谢谢你的帮助。我会在我找到答案后标记你的答案。我想做的是,如果arrayOne.AllowedTo=arrayTwo.EntityName,将其添加到newArray,并用newArray填充表格。这可以用集合完成吗?我以前从未使用过它们。我不确定我是否遵循了你的数据结构,但使用了集合有点像一个数组,只是它是无序的,并且其中的项是唯一的。所以我建议您为两个数组中的每一个都创建一个集合,然后利用intersect功能来获取公共元素。然后您可以为表获取相交集合的“AllObject”数组,尽管您可能需要重新排序。
NSMutableSet *dataToShow = [NSMutableSet setWithArray:yourFirstArray];
NSSet *other = [NSSet setWithArray:yourSecondArray];
[dataToShow intersectSet:other];
if ([AllowedTo containsString:newEstNet.EntityName]) {
    NSLog(@"%@ displayed", newEstNet.EntityName);
    [listOfEstNetGrand addObject:newEstNet];
} else {
    NSLog(@"%@ not displayed", newEstNet.EntityName);
    // dont add the object to the array
}