gpt4 book ai didi

swift - 在 swift 4.1 中模糊使用 'init(contentsOfURL:)'

转载 作者:行者123 更新时间:2023-11-28 06:01:02 27 4
gpt4 key购买 nike

我使用 Swift 4.1 和 XCode 9.3

var upsList = [Any]()

func loadUpsValues () {
print("loadUpsValues")
let upsFileAsURL = URL(string: "Upslist.txt")
// Original Objective C Call was: NSMutableArray *ListUpsArray = [NSMutableArray arrayWithContentsOfURL:upsFile];
//
let upsList = NSArray(contentsOfURL:upsFileAsURL! )
}

我收到一个错误:“init(contentsOfURL:)”的使用不明确并且 NSArray 的来源似乎来自相同的基础定义:

我有两次:

1 Found this candidate (Foundation.NSArray)2 Found this candidate (Foundation.NSArray)

谢谢你的帮助

最佳答案

这个错误是因为 [NS(Mutable)Array arrayWithContentsOfURL:]; 在 Swift 中不存在。

对于 swift 而言,NSArray 初始化程序已更改为更加“快速”,因此它变成了:

NSArray(contentsOf:)

如图所示 here .


所以改变你的最后一行,代码应该按预期运行,即:

let upsList = NSArray(contentsOf: upsFileAsURL!)

编辑:

继续@nayem 的评论。假设您的文本文件是行的集合,您可以更改代码以在不依赖基于 NS 的对象的情况下工作,如下所示:

func loadUpsValues () {
do {
guard let url = Bundle.main.url(forResource: "Upslist", withExtension: "txt") else { return }

let data = try String(contentsOf: url)
let upsList = data.components(separatedBy: NSCharacterSet.newlines)

...
} catch {
/* handle error */
}
}

关于swift - 在 swift 4.1 中模糊使用 'init(contentsOfURL:)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49728152/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com