Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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
Swift 通过类实例访问结构_Swift - Fatal编程技术网

Swift 通过类实例访问结构

Swift 通过类实例访问结构,swift,Swift,在我创建的类中,我有一个名为Image的struct: public struct Image { private(set) var url: String private(set) var crop: CGRect init(url: String, crop: CGRect) { self.url = url self.crop = crop } } 我还有一个使用Image作为参数的函数 public func detectBox

在我创建的
类中,我有一个名为
Image
struct

public struct Image {


 private(set) var url: String
 private(set) var crop: CGRect

    init(url: String, crop: CGRect) {
        self.url = url
        self.crop = crop
    }
}
我还有一个使用
Image
作为参数的函数

public func detectBoxes(image: Image) {
    //some code
}
我想做的是访问另一个文件中的
图像
,以便在函数中使用它。因此,我创建了
类的一个实例
,并尝试键入

instance.detectBoxes(image: ...)
但是它不允许我创建
Image
的实例,这样我就可以使用它了,它只希望我键入
Class.Image
,这没有意义

有人知道如何解决我的问题吗?任何帮助都将不胜感激。干杯
Theo

您在类中定义了嵌套结构,这意味着它可以在类上下文中使用


如果只希望使用类型为
Image
而不是
.Image
的实例,则必须将结构的声明移出类的范围。

是否在类声明中声明了结构(即嵌套声明)?或者它们只是在同一个文件中定义的?@paulvs在类中非常感谢!我按照你的建议做了,但是当我试图在我的另一个文件中创建它的实例时,我做了
var-imageInstance=Image(
it不会自动完成为
Image(url:String,crop:CGRect)
。你知道这是怎么回事吗。一旦我开始工作,我就成功了。如果你能解决这个问题,我一定会给你打勾的。我意识到我的
init()
函数不是公共函数,所以我这样做了,但它仍然不起作用。当我键入
var-imageinstance=Image(url:“blah”,crop:“blah”)时,我会出错
,“Image”初始值设定项由于“internal”保护级别而无法访问只是一个观察,您不必为结构声明“default”init,只需为类。如果您编写
struct A{var x=0}
它会自动具有
A(x:Int)
init。