繁体   English   中英

通用参数'FalseContent'无法推断

[英]generic parameter 'FalseContent' could not be inferred

我正在尝试创建一个4x4的图像网格,我希望它可以从1张图像放大到4张。

当提供的图像来自常规数组时,此代码有效

var images = ["imageOne", "imageTwo", "imageThree", "imageFour"]

但是,如果数组来自我们绑定到的对象,那么它将不起作用:

@ObjectBinding var images = ImageLoader() //Where our array is in images.images

我的初始化程序如下所示:

init(imageUrls urls: [URL]){
    self.images = ImageLoader(urls)
}

我的ImageLoader类如下所示:

class ImageLoader: BindableObject {
    var didChange = PassthroughSubject<ImageLoader, Never>()

    var images = [UIImage]() {
        didSet{
            DispatchQueue.main.async {
                self.didChange.send(self)
            }
        }
    }

    init(){

    }

    init(_ urls: [URL]){
        for image in urls{
            //Download image and append to images array
        }
    }
}

我的问题就出现了View

var body: some View {
    return VStack {
        if images.images.count == 1{
            Image(images.images[0])
                .resizable()
        } else {
            Text("More than one image")
        }
    }
}

编译后,我得到了generic parameter 'FalseContent' could not be inferred错误的generic parameter 'FalseContent' could not be inferred ,其中FalseContent是SwiftUI buildEither(first:)函数的一部分。

同样,如果images (不是绑定到ImageLoader )是String的常规数组,则可以正常工作。

我不确定是什么引起了该问题,它似乎是由绑定引起的,但是我不确定该如何解决。

问题是您的图片初始化程序,您传递了UIImage,因此您应该这样称呼它:

Image(uiImage: images.images[0])

请注意,在处理视图时,流控制有些复杂,并且错误消息可能会引起误解。 通过注释视图的IF语句的“其他”部分,编译器将向您显示失败的真正原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM