我一直在尝试访问命令行工具 Xcode 项目中的文件,但程序无法找到文件路径。我假设这是因为文件没有被复制到我的项目中。
我已经去构建阶段并添加了我的文件(graph2.net),但程序找不到该文件。
func readGraph() {
if let path = Bundle.main.path(forResource: "graph2", ofType: "net") {
print(path)
} else {
print("Failed")
}
}
Run Code Online (Sandbox Code Playgroud)
总是返回失败。但是,在 iOS 应用程序中,存在复制捆绑资源的选项,我可以找到该文件。我该如何解决这个问题?
假设我有一堂课:
class Fruit {
var fruitName: String
init(getFruit name: String) {
fruitName = name
}
}
Run Code Online (Sandbox Code Playgroud)
使用构造函数和使用.init有什么区别?
var apple = Fruit(getFruit: "apple")
var orange = Fruit.init(getFruit: "orange")
Run Code Online (Sandbox Code Playgroud)
如果问题措辞不好或之前曾被问过,我深表歉意。
我有一个collectionView,其中有一堆单元格,每个单元格中包含一个UIImageView。我想测试是否在每个单元格中,imageView的图像匹配正确的图像名称。
在生产代码中,我向UIImageView示例添加了一个可访问性标识符:“我的图像视图”。我遍历包含图像名称的字符串数组,并根据索引设置单元格的图像,例如:[“ image0.png”,“ image1.png”,“ image2.png”],因此索引为0-2的单元格将分别有那些图像。
在我的XCUITest文件中,我正在尝试如下操作:
XCTAssert(cells.images["My Image View"].exists, "message here")
Run Code Online (Sandbox Code Playgroud)
但这不会检查单元格的imageView是否具有正确的图像。谁能提出更好的解决方案?
我之前访问过的一些参考资料:
如何在iOS XCTest中测试UIImageView元素?
抱歉,如果您之前曾提出此问题,我什么都找不到。
编辑:我找到了解决方案。
let image = cells.element(matching: , identifier: )
Run Code Online (Sandbox Code Playgroud)
我不知道identifier参数实际上使用的是图像名称,因此如果我传递图像名称,则可以断言该图像的存在。
let image = cells.element(matching: .image, identifier: "myImage.png")
Run Code Online (Sandbox Code Playgroud)
这可行。因此,当我遍历包含图像名称的字符串数组时,我还可以检查与图像索引对应的索引处的单元格是否正确。
我还忘了提到图像不是存储在资产中,而是通过json获取。
cesarmarch的回答是最接近的,因此我将其标记为正确。
我的 xcode 项目中有一个 json 文件,我正在尝试通过以下方式读取该文件:
\n\nlet fileUrl = Bundle.main.url(forResource: "myfile", withExtension: "json")\nRun Code Online (Sandbox Code Playgroud)\n\n等等。
\n\n当我从项目目标成员资格内的文件(例如视图控制器文件)运行此代码时,代码将运行并且我能够读取 json。但是,当在我的 XCUITestCase 文件 \xe2\x80\x93 中运行它时,它失败了,无法找到 url。
\n\n如何从 XCUItest 中读取 json 文件?
\n\n我已经看过这篇文章,但没有帮助\n Read local JSON file in XCUITest
\n