无法将类型“Array<Hourly>.SubSequence”(又名“ArraySlice<Hourly>”)的值分配给类型“[Hourly]”

Posted

技术标签:

【中文标题】无法将类型“Array<Hourly>.SubSequence”(又名“ArraySlice<Hourly>”)的值分配给类型“[Hourly]”【英文标题】:Cannot assign value of type 'Array<Hourly>.SubSequence' (aka 'ArraySlice<Hourly>') to type '[Hourly]' 【发布时间】:2021-04-04 04:56:40 【问题描述】:

我有这样的 API 响应:

这里每小时列表有 48 项。所以我想在从 JSON 解码这个响应后对这个数组进行切片:

if !self.HourlyData.isEmpty 
            self.HourlyData = self.HourlyData[0...23]

但这会产生错误:

Cannot assign value of type 'Array<Hourly>.SubSequence' (aka 'ArraySlice<Hourly>') to type '[Hourly]'

然后试试这个:

if !self.HourlyData.isEmpty 
            self.HourlyData = self.HourlyData.index(before: 24)

仍然出现此错误:

Cannot assign value of type 'Int' to type '[Hourly]'

那么,我如何从这个 hourly 列表中分割前 24 个项目。

【问题讨论】:

将变量类型声明更改为ArraySlice&lt;Hourly&gt;,而不是数组。顺便说一句,你可以简单地得到yourCollection.prefix(24) 你应该小写HourlyData -> hourlyData 【参考方案1】:

像这样:

self.HourlyData = Array(self.HourlyData[0...23])

【讨论】:

【参考方案2】:

请注意约定,将变量的首字母大写是不好的做法。

self.hourly = Array(self.hourly.prefix(24))

https://developer.apple.com/documentation/swift/array/1689487-prefix

【讨论】:

以上是关于无法将类型“Array<Hourly>.SubSequence”(又名“ArraySlice<Hourly>”)的值分配给类型“[Hourly]”的主要内容,如果未能解决你的问题,请参考以下文章

无法将类型为“System.Collections.Generic.List`1[EPMS.Domain.SingleItem]”的对象强制转换为类型“EPMS

C# 无法将类型为“System.Byte[]”的对象强制转换为类型“System.Data.DataTable

无法将类型“[PHAsset]”的值分配给类型“UIImageView!”

无法将 [Struct] 类型的值快速转换为 [string] 类型

无法将类型“()”的值转换为预期的参数类型“字符串”

无法将“字符串”类型的值转换为预期的参数类型 [任何]