ios - 在添加新值之前用逗号映射 Swift 数组

标签 ios arrays swift realm

我的 Realm 对象中有以下数据结构

var tags = List<Tag>()
"tags": [
    {
        "tagId": "80069",
        "tagName": "A"
    },
    {
        "tagId": "80070",
        "tagName": "B"
    },
    {
        "tagId": "80071",
        "tagName": "C"
    },
    {
        "tagId": "80073",
        "tagName": "D"
    }
]

所以我想要实现的是,我将我所有的标签名称映射到我的新数组中

这是我的代码

let realmObject = self.realm.objects(MyDTO.self)
let array = Array(realmOutletList).map{Array($0.tags).map{$0.tagName!}.joined(separator: ",")}

它打印出这个

["A,B,C", "A,C,D", "B,C,D"]

我想达到的效果是这样的

["A","B","C", "A","C","D", "B","C","D"]

我需要那种数组,因为我要从该数组创建一个 Set,然后与另一个数组进行比较

比较的数组会像

["A","B","C", "A","C","D", "B","C","D"]

因为比较的Array和realmObject的Array不一样,所以用的时候总是显示false

let subset = filterSet.isSubset(of: mySet)

有人可以指导我吗?

谢谢

最佳答案

让我们来解决这个问题:

考虑你有:

let originalArray = ["A,B,C", "A,C,D", "B,C,D"]

首先,我们需要用“,”字符分隔originalArray中的每个字符串,所以我们可以这样做:

let modifiedArray = originalArray.map { $0.components(separatedBy: ",") }

我们映射它以将每个字符串转换为字符串数组(分离)。

到目前为止,modifiedArray 的输出将是:

[["A", "B", "C"], ["A", "C", "D"], ["B", "C", "D"]]

这是一个字符串数组。

其次,我们需要在 modifiedArray 中溢出每个 -string- 数组(取而代之的是一个简化的字符串数组),所以我们可以这样做:

var final = [String]()
for array in modifiedArray {
    for string in array {
        final.append(string)
    }
}

OR 使用 reduce

let finalArray = modifiedArray.reduce([], +)

因此,finalArray 将是:

["A", "B", "C", "A", "C", "D", "B", "C", "D"]

这是期望的结果。


结论

对于完整的单行答案(遵循高阶函数方法):

let originalArray = ["A,B,C", "A,C,D", "B,C,D"]

let desiredArray = originalArray.map { $0.components(separatedBy: ",") }.reduce([], +)
print(desiredArray) // ["A", "B", "C", "A", "C", "D", "B", "C", "D"]

关于ios - 在添加新值之前用逗号映射 Swift 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49554295/

相关文章:

php - 如何计算 php 中的重复数组值?

PHP/SQL 数组访问错误

xcode - 使用数组和 UITableView 作为指示器通过函数调用字符串

ios - 父/子 NSManagedObjectContext 的正确实现

html - HTML输入自动完成功能在WKWebview中不起作用

ios - Xcode 快疯了!在编码时,丢失类、引用并且不会自动完成,经常给出 <<error type>>

ios - 从应用程序中更改默认搜索引擎

C++ 位列表作为数字

ios - 如何创建翻转两个图像的 Swift 动画类

ios - 受密码保护的 UITextField 上的大写锁定图像