Компилятор не может проверить тип этого выражения swift 4? - PullRequest
0 голосов
/ 18 сентября 2018

После обновления xCode я получаю эту ошибку в свой код:

Компилятор не может проверить это выражение в разумных пределах время; попробуйте разбить выражение на отдельные подвыражения

Код:

//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 )
    }
}

Ошибка в строке:

let spaceFromRightSide = cutOutViewX.constant + cutOutViewWidth.constant/2 + (options.textWidth + padding*2)/2

как это исправить?

Ответы [ 6 ]

0 голосов
/ 08 августа 2019

Это действительно проблема с памятью.Это случилось со мной, когда на моей машине объемом 16 ГБ у меня только 350 МБ свободной памяти.Использование fe CleanMyMac -> Освободить память решило эту проблему.

0 голосов
/ 11 июля 2019

У меня была эта ошибка, когда я случайно смешал необязательное в выражении. После распаковки ошибка исчезла.

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 
0 голосов
/ 04 марта 2019

Я столкнулся с похожей проблемой с другим сценарием

Я пытался создать массив строк

let selectedData = [
        (data?.nose?.stuffyNose) ?? "",
        (data?.nose?.sinusProblems) ?? "",
        (data?.nose?.hayFever) ?? "",
        (data?.nose?.sneezingAttacks) ?? "",
        (data?.nose?.excessiveMucusFormation) ?? ""
] 

Я уже добавил скобки () , но все еще не работал.


Чтобы исправить это, я добавил тип [String]

let selectedData:[String] = [
        (data?.nose?.stuffyNose) ?? "",
        (data?.nose?.sinusProblems) ?? "",
        (data?.nose?.hayFever) ?? "",
        (data?.nose?.sneezingAttacks) ?? "",
        (data?.nose?.excessiveMucusFormation) ?? ""
] 

Надеюсь, это полезно для тех, кто сталкивается с той же проблемой

0 голосов
/ 24 января 2019

Итак, у меня есть такое выражение:

return (50 + textHeight) + (dateTextHeight + 16) + (5 + 8) + (16 + 20)

Я знал, что мне нужно разбить или сделать это выражение короче, чтобы избавиться от ошибки.Например, возможно:

return (50 + textHeight) + (dateTextHeight + 16) + 49

Хотя это и помогло компилятору справиться со своей задачей, основной причиной ошибки является необязательный тип Int textHeight.Я думаю, независимо от того, как долго ваше выражение, оно должно быть компилируемым.

0 голосов
/ 18 сентября 2018

Компилятор не может проверить это выражение в разумные сроки;попробуйте разбить выражение на отдельные подвыражения

Эта ошибка появляется, когда компилятор swift находит вычисление выражения длинным.Для более подробной информации проверьте здесь

Чтобы решить эту проблему, вам просто нужно разбить выражение на более мелкие части.Прямо как:

let cutOutxOrigin = 3 * cutOutViewX.constant / 2
let actualPadding = (options.textWidth + padding * 2) / 2

let spaceFromRightSide = cutOutxOrigin + actualPadding
0 голосов
/ 18 сентября 2018

Просто попробуйте разбить выражение на несколько более простых подвыражений.Например:

let halfOfViewWidth = cutOutViewWidth.constant / 2
let textWidthAndPadding = options.textWidth + (padding * 2)
let spaceFromRightSide = cutOutViewX.constant + halfOfViewWidth + (textWidthAndPadding / 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...