Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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
Arrays 如何在Swift中将.txt文件拆分为多维数组或字典?_Arrays_Swift_Sorting_Dictionary_Parsing - Fatal编程技术网

Arrays 如何在Swift中将.txt文件拆分为多维数组或字典?

Arrays 如何在Swift中将.txt文件拆分为多维数组或字典?,arrays,swift,sorting,dictionary,parsing,Arrays,Swift,Sorting,Dictionary,Parsing,我需要以以下格式解析的txt文件体: Name: LittleX Package: com.ioscreatix.littlex Description: iPhone X features for Non-X devices on iOS 11, and iPad Dock and PiP for All iOS 11 Devices on iOS 11 Name: InteliX Package: com.ioscreatix.intelix Description: Grouped No

我需要以以下格式解析的txt文件体:

Name: LittleX
Package: com.ioscreatix.littlex
Description: iPhone X features for Non-X devices on iOS 11, and iPad Dock and PiP for All iOS 11 Devices on iOS 11

Name: InteliX
Package: com.ioscreatix.intelix
Description: Grouped Notifications for iOS 11
我希望我的数组中的每个包在一个数组中分别按其名称值列出,并使用字典进行描述和包。我将如何做到这一点

这是我目前掌握的代码:

var unfilteredPackagesArray = [String]()
    var secondFilteredPackagesArray = [String]()
    var finalFilteredPackagesArray = [String]()

if let startWordsURL = Bundle.main.url(forResource: "Packages", withExtension: "") {
            if let startWords = try? String(contentsOf: startWordsURL) {
                unfilteredPackagesArray = startWords.components(separatedBy: "\n\n")

                print(unfilteredPackagesArray)
                secondFilteredPackagesArray = startWords.components(separatedBy: "\n")


                finalFilteredPackagesArray = startWords.components(separatedBy: ":")

                print(secondFilteredPackagesArray)
最好的方法是什么?创建软件包对象并将其组成一个数组?

是的,请继续! 是的,我认为您应该创建一个
结构,然后生成一个
包数组

这是密码


1.定义包struct@JoakimDanielson问题是我从输入中得到这个txt文件。这给了我一个bzip2包,我仍然不知道如何用swift打开,其中有一个txt文件。遗憾的是,我无法从中获得json。以后使用stride而不是3个数组压缩(两次)怎么样?这将避免3个过滤器。附加问题:删除的最后一个
compactMap()
:“第一部分,在这里更好,还是在包的自定义
init()
方法中删除更好?@Larme stride是这个函数式编程方法的一个很好的替代方法。@Larme关于第二个问题,您可以通过执行
.compactMap>进一步阐述吗{$0.components(分隔符:“:”).last}
再次迭代整个数组,而这可以在
包中完成。init()
@Larme现在我明白了你的意思。你的解决方案确实比我的快。但我不确定是否有一个放弃部分传递参数的初始值设定项。