SwiftUI误导性错误:'Int'不能转换为'CGFloat'
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SwiftUI误导性错误:'Int'不能转换为'CGFloat'相关的知识,希望对你有一定的参考价值。
我一直在行83 .offset(x:150,y:7)上将'Int'转换为'CGFloat'。如果我将数字包装在CGFloat()中,则相同的错误只会在其他地方出现。我知道这与程序中的控制流有关,但我无法确定位置。请帮助。
这是我的DateTracking.swift屏幕代码(出现错误)。
struct DateTracking: View
@State var recipes: [Recipe] = getRecipes()
@State var filterRecipesBy: String = ""
@State private var searchTerm: String = ""
@State var sortedNames: [Item] = getItemsSortedByNames()
@State var sortedDays: [Item] = getItemsSortedByDaysLeft()
@State var arraySelection: Int = 0
@State var sortBySelected: Bool = false
@State var recipesShown: Bool = false
@State var buttonShown: Bool = true
var body: some View
NavigationView
ZStack
VStack
SearchBar(text: $searchTerm)
if(self.arraySelection == 0)
QGrid(sortedDays.filter
self.searchTerm.isEmpty ? true :
$0.imageName.localizedCaseInsensitiveContains(self.searchTerm)
, columns: 3) item in
Button(action:
self.filterRecipesBy = item.imageName
recipesShown.toggle()
)
ListItem(imageName: item.imageName, daysLeft: item.daysLeft, redBackground: item.redBackground )
//.background(Color(red: 239 / 255, green: 239 / 255, blue: 239 / 255))
if(self.arraySelection == 1)
QGrid(sortedNames.filter
self.searchTerm.isEmpty ? true :
$0.imageName.localizedCaseInsensitiveContains(self.searchTerm)
, columns: 3) item in
ListItem(imageName: item.imageName, daysLeft: item.daysLeft, redBackground: item.redBackground )
//.background(Color(red: 239 / 255, green: 239 / 255, blue: 239 / 255))
if (self.sortBySelected == true)
VStack
Button(action:
self.sortBySelected.toggle()
)
Text("Done")
.offset(x: 150, y: 7)
Picker(selection: self.$arraySelection, label:
Text("Picker Name"))
Text("Expiry Date").tag(0)
Text("Names").tag(1)
.labelsHidden()
.frame(width:375)
.background(Color(red: 239 / 255, green: 239 / 255, blue: 239 / 255))
.offset(x: 0, y: 140)
if (self.recipesShown == true)
VStack(alignment: .center, spacing: 15)
HStack
Button(action: self.recipesShown.toggle()
)
Cross()
.offset(x: -70, y: 11)
Text(verbatim: "Recipes You Can Cook")
.font(.headline)
.fontWeight(.bold)
.padding(.top)
.offset(x: -50, y: 5)
RecipesVertical(recipes: self.recipes.filter($0.ingredients.contains(filterRecipesBy)))
.padding(.leading)
//.offset(x: 0, y: 140)
.frame(width:375, height:310, alignment: .center)
.background(Color.white)
/* if(buttonShown == true)
Button(action: self.recipesShown = true
self.buttonShown = false
)
Image("floatingrecipebutton")
.resizable()
.frame(width: 85, height: 85)
.shadow(radius: 10)
.offset(x: 125, y:200)
*/
.navigationBarTitle(Text("Date Tracking"))
.navigationBarItems(trailing:
HStack
Button(action:
self.sortBySelected.toggle()
)
Text("Sort by")
)
答案
在Swift中,如果没有明确的强制转换,则不能将Int分配给CGFloat。
在这种情况下,您可以代替1
来更改为1.0
。可以的。
以上是关于SwiftUI误导性错误:'Int'不能转换为'CGFloat'的主要内容,如果未能解决你的问题,请参考以下文章
C ++在地图中搜索元组错误:无法将'int'左值绑定到'int &&'
c语言写scanf("%d",(int)&num);提示错误but argument 2 has type 'int'
python的强制转换(当出现 not supported between instances of 'str' and 'int' 的错误时)
Python,API 的错误,不知道怎么修改 '<' not supported between instances of 'int' and 'str&