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
}