gpt4 book ai didi

swift - 无法将类型 'Int' 的值转换为预期参数类型 '_?'

转载 作者:行者123 更新时间:2023-11-30 10:04:55 26 4
gpt4 key购买 nike

注意:我是 Swift 新手

我正在使用Former .

我正在从领域模型中获取数据。

let industries = realm.objects(Industry)

然后我尝试从中定义一个 InlinePickerItem 列表:

$0.pickerItems = industries.map({ industry in
return InlinePickerItem(title: industry.name, value: industry.id)
})

但 XCode 一直提示:无法将“Int”类型的值转换为预期的参数类型“_?”,指向 industry.id

我错过了什么吗?我不知道这个问题是来自前者还是来 self 不理解的 Swift 内容。例如_是什么类型?

更新:

@dfri 评论后,尝试失败。从我对 Swift 的一点了解来看,我知道 Swift 迷失了。因此,我从闭包中提取了 InlinePickerItem 列表的初始化。

    let industries = realm.objects(Industry)
let inlinePickerItems = industries.map({ industry in
return InlinePickerItem(title: industry.name, displayTitle: nil, value: industry.id)
})
let catRow = InlinePickerRowFormer<ProfileLabelCell, String>(instantiateType: .Nib(nibName: "ProfileLabelCell")) {
$0.titleLabel.text = "CATEGORY".localized
}.configure {
$0.pickerItems = inlinePickerItems
}

调用InlinePickerItem(title:industry.name,displayTitle:nil,value:industry.id)时错误消失了,但在将其分配给 $0.pickerItems<时我得到了新的东西 现在是:

Cannot assign value of type '[InlinePickerItem<Int>]' to type '[InlinePickerItem<String>]'

希望这能为您提供一些有用的提示。

最佳答案

将数组分配给不同类型数组时类型不匹配

重构代码后(“更新”之后)现在很明显错误的根源是什么。

不可变 catRow类型为InlinePickerRowFormer<ProfileLabelCell, String> 。从[InlinePickerRowFormer]的来源我们看到该类及其属性pickerItems声明如下

public class InlinePickerRowFormer<T: UITableViewCell, S where T: InlinePickerFormableRow>
: ... {

// ...

public var pickerItems: [InlinePickerItem<S>] = []

// ...
}

这里的关键是,例如 InlinePickerRowFormer<T,S>它的属性pickerItems将是一个元素类型为 InlinePickerItem<S> 的数组。在上面的示例中 SString

let catRow = InlinePickerRowFormer<ProfileLabelCell, String>
/* |
S = String */

因此pickerItemsInlinePickerItem<String> 的数组实例。

但是,您尝试附加不可变的 inlinePickerItemspickerItems ,这意味着您正在尝试分配 InlinePickerItem<Int> 的数组元素类型为 InlinePickerItem<String> 的数组的实例;自然会导致类型不匹配。

您可以通过以下方式解决此类型不匹配问题:

  • 设置您的 catRow不可变为 InlinePickerRowFormer<ProfileLabelCell, Int> 类型.

关于swift - 无法将类型 'Int' 的值转换为预期参数类型 '_?',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36552580/

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