Post

Replies

Boosts

Views

Activity

Char comparison not working
I am making a program that will need to compare 2 characters. It would take the last character of the first word and check to see if it is the same as the first character in the second word. I have code that seems to be correct so not really sure where to go from here. The function I feel that is in question is wordChained()->Bool. struct GameView: View { @State var score = 0 @State var health = 3 @State private var playerWord = "" @State private var prevWord = "" @State private var usedwords = [String]() var body: some View { ZStack{ LinearGradient(gradient: Gradient(colors: [Color.red, Color.orange]), startPoint: .top, endPoint: .bottom) .edgesIgnoringSafeArea(.vertical) VStack{ HStack{ Image("chain").scaleEffect(1.3) Image("chain").scaleEffect(1.3).rotationEffect(Angle(degrees: 90)) Image("chain").scaleEffect(1.3) Image("chain").scaleEffect(1.3).rotationEffect(Angle(degrees: 90)) Image("chain").scaleEffect(1.3) } HStack{ HStack{ Text("Score:") Text(String(score)) }.padding() HStack{ Text("Health:") Text(String(health)) } } Spacer() Spacer() VStack { if health == 0{ NavigationLink(destination: MenuView().navigationBarTitle(Text("x")).navigationBarHidden(true)){ Text("YOU LOSE | GO TO MENU").padding() .border(Color.black, width: 2) .scaleEffect(0.8) .accentColor(Color.black) } } else{ TextField("Enter a Word", text: $playerWord, onCommit: addNewWord) //<- No `()->Void` here .padding() .border(Color.black, width: 2) .scaleEffect(0.8) } List(usedwords, id: \.self){ Text($0) } } Spacer() HStack{ Image("chain").scaleEffect(1.3).rotationEffect(Angle(degrees: 90)) Image("chain").scaleEffect(1.3) Image("chain").scaleEffect(1.3).rotationEffect(Angle(degrees: 90)) Image("chain").scaleEffect(1.3) Image("chain").scaleEffect(1.3).rotationEffect(Angle(degrees: 90)) } } } } func addNewWord(){ let answer = playerWord.lowercased().trimmingCharacters(in: .whitespacesAndNewlines) guard answer.count > 0 else { return } if isValid(possibleWord: answer){ score += 1 usedwords.insert(answer, at: 0) prevWord = answer playerWord = "" } else{ health -= 1 playerWord = "" } } func getWords() -> [String]?{ var arrayOfStrings: [String]? do { // This solution assumes you've got the file in your bundle if let path = Bundle.main.path(forResource: "english3", ofType: "txt"){ let data = try String(contentsOfFile:path, encoding: String.Encoding.utf8) arrayOfStrings = data.components(separatedBy: "\n") } } catch let err as NSError { // do something with Error print(err) } return arrayOfStrings } func wordChained() -> Bool{ let char1 = prevWord[prevWord.index(prevWord.startIndex, offsetBy: prevWord.count - 1)] let char2 = playerWord[playerWord.index(playerWord.startIndex, offsetBy: 0)] if char1 == char2{ return true } else{ return false } } func isValid(possibleWord: String) -> Bool{ let wordList = getWords() if ((wordList?.isEmpty) != nil){ if wordList!.contains(possibleWord){ return true } else{ return false } } else{ if wordList!.contains(possibleWord) && wordChained(){ return true } else{ return false } } } } struct SwiftUIView_Previews: PreviewProvider { static var previews: some View { GameView() } }
6
0
567
Jul ’21
Failed to produce diagnostic for expression; please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project
I cannot find a way to fix this error. I have seen posts about a similar problem but I cannot make any correlations. I am trying to take the input from a textfield, putting it in an array and displaying it in a list. struct GameView: View {   @State var score = 0   @State private var playerWord = ""   @State private var usedwords = [String]()           var body: some View {           ZStack{       LinearGradient(gradient: Gradient(colors: [Color.red, Color.orange]), startPoint: .top, endPoint: .bottom)             .edgesIgnoringSafeArea(.vertical)               VStack{         HStack{           Image("chain").scaleEffect(1.3)           Image("chain").scaleEffect(1.3).rotationEffect(Angle(degrees: 90))           Image("chain").scaleEffect(1.3)           Image("chain").scaleEffect(1.3).rotationEffect(Angle(degrees: 90))           Image("chain").scaleEffect(1.3)         }         HStack{           Text("Score:")           Text(String(score))         }.padding()                             Spacer()         Spacer()                   VStack {             TextField("Enter a Word", text: $playerWord, onCommit: addNewWord()->Void)             .padding()             .border(Color.black, width: 2)             .scaleEffect(0.8)                List(usedwords, id: \.self){             Text($0)           }                     }                   Spacer()                   HStack{           Image("chain").scaleEffect(1.3).rotationEffect(Angle(degrees: 90))           Image("chain").scaleEffect(1.3)           Image("chain").scaleEffect(1.3).rotationEffect(Angle(degrees: 90))           Image("chain").scaleEffect(1.3)           Image("chain").scaleEffect(1.3).rotationEffect(Angle(degrees: 90))         }       }     }   }   func addNewWord(){     let answer =       playerWord.lowercased().trimmingCharacters(in: .whitespacesAndNewlines)           guard answer.count > 0 else {       return     }           usedwords.insert(answer, at: 0)     playerWord = ""   } } struct SwiftUIView_Previews: PreviewProvider {   static var previews: some View {     GameView()   } }
1
0
1.2k
Jul ’21