Nach dem Update von xCode bekomme ich diesen Fehler in meinen Code:
Der Compiler kann diesen Ausdruck nicht in sinnvollen .__-Typen prüfen. Zeit; Versuchen Sie, den Ausdruck in verschiedene Unterausdrücke aufzuteilen
Der Code :
//check popup in window frame
let spaceFromLeftSide = cutOutViewX.constant + cutOutViewWidth.constant/2 - (options.textWidth + padding*2)/2
if spaceFromLeftSide < 0{
if options.side == .bottom {
messageRightSpaceFromBottomDot.constant -= spaceFromLeftSide - padding
}
else if options.side == .top{
messageRightSpaceFromTopDot.constant += spaceFromLeftSide - padding
}
}
let spaceFromRightSide = cutOutViewX.constant + cutOutViewWidth.constant/2 + (options.textWidth + padding*2)/2
if spaceFromRightSide > targetView.frame.size.width{
if options.side == .bottom {
messageRightSpaceFromBottomDot.constant -= spaceFromRightSide - ( targetView.frame.size.width )
}
else if options.side == .top{
messageRightSpaceFromTopDot.constant += spaceFromRightSide - ( targetView.frame.size.width )
}
}
Fehler in Zeile:
let spaceFromRightSide = cutOutViewX.constant + cutOutViewWidth.constant/2 + (options.textWidth + padding*2)/2
wie kann ich das beheben?
Der Compiler kann diesen Ausdruck nicht in angemessener Zeit prüfen. Versuchen Sie, den Ausdruck in verschiedene Unterausdrücke aufzuteilen
Dieser Fehler tritt auf, wenn der Swift-Compiler die Ausdruckberechnung langwierig findet. Für mehr Details hier klicken
Um dies zu beheben, müssen Sie nur Ihren Ausdruck in kleinere Teile aufteilen. So wie:
let cutOutxOrigin = 3 * cutOutViewX.constant / 2
let actualPadding = (options.textWidth + padding * 2) / 2
let spaceFromRightSide = cutOutxOrigin + actualPadding
Versuchen Sie einfach, den Ausdruck in mehrere einfachere Unterausdrücke aufzuteilen. Z.B.:
let halfOfViewWidth = cutOutViewWidth.constant / 2
let textWidthAndPadding = options.textWidth + (padding * 2)
let spaceFromRightSide = cutOutViewX.constant + halfOfViewWidth + (textWidthAndPadding / 2)
Ich habe ein ähnliches Problem mit einem anderen Szenario konfrontiert
Ich habe versucht, eine Reihe von Zeichenfolgen zu erstellen
let selectedData = [
(data?.nose?.stuffyNose) ?? "",
(data?.nose?.sinusProblems) ?? "",
(data?.nose?.hayFever) ?? "",
(data?.nose?.sneezingAttacks) ?? "",
(data?.nose?.excessiveMucusFormation) ?? ""
]
Ich habe bereits Klammern hinzugefügt () aber immer noch nicht funktioniert.
Um dieses Problem zu beheben, habe ich Folgendes hinzugefügt: [String]
let selectedData:[String] = [
(data?.nose?.stuffyNose) ?? "",
(data?.nose?.sinusProblems) ?? "",
(data?.nose?.hayFever) ?? "",
(data?.nose?.sneezingAttacks) ?? "",
(data?.nose?.excessiveMucusFormation) ?? ""
]
Hoffe, es ist hilfreich für jemanden, der vor dem gleichen Problem steht
Ich habe also diese Art von Ausdruck:
return (50 + textHeight) + (dateTextHeight + 16) + (5 + 8) + (16 + 20)
Ich wusste, dass ich diesen Ausdruck kürzen oder verkürzen musste, um den Fehler zu beseitigen. Wie vielleicht:
return (50 + textHeight) + (dateTextHeight + 16) + 49
Obwohl dies der Fall ist, hat der Compiler zwar seine Aufgabe erfüllt, die Hauptursache für den Fehler ist jedoch die optionale Int textHeight
. Ich denke, egal wie lang Ihr Ausdruck sein sollte, er sollte kompilierbar sein.
Ich hatte diesen Fehler, als ich versehentlich ein optionales Element in einen Ausdruck eingemischt habe. Nach dem gewaltsamen Auspacken verschwand der Fehler.
let a : String = "A"
let b : String = "B"
let c = letterDictionary["C"]
let imageName : String = a + b + c //error
let imageName : String = a + b + c! //no error
Dies ist in der Tat ein Speicherproblem. Es ist mir passiert, als ich nur 350 MB freien Speicher auf meinem 16-GB-Rechner hatte. Verwendung von f.e. CleanMyMac -> Speicher freigeben hat dieses Problem behoben.