Swift If-Statement Область действия с массивами - PullRequest
0 голосов
/ 02 мая 2018

У меня есть базовый массив, которым я бы хотел манипулировать. Кажется, что в скобках моего оператора if я могу успешно манипулировать массивом (правая часть экрана показывает, что значение изменилось); однако, как только я оставлю оператор if, изменения, похоже, исчезнут (правая часть экрана показывает исходное значение, а не измененное). Спасибо за вашу помощь!

var originalInfo = """
This
Is
A
Test
String
"""

// split string

var SplitInfo = originalInfo.split(separator: "\n")

// Manipulate Array

if SplitInfo[1].hasPrefix("I") == true {
    SplitInfo[1].replacingOccurrences(of: "s", with: "s not")
}

SplitInfo[1]

1 Ответ

0 голосов
/ 02 мая 2018

Метод replaceOccurences(of:with:) возвращает строку с новым значением, поэтому вам необходимо присвоить новое значение переменной

SplitInfo[1] = SplitInfo[1].replacingOccurrences(of: "s", with: "s not")

Только тогда вы увидите изменения. Если вы щелкнете по методу и откроете раздел быстрой справки на правой панели Xcode, вы увидите

Range<String.Index>? = default) -> String

-> String означает, что он возвращает строку, поэтому вам нужно присвоить это чему-либо.

Если вы пытаетесь сохранить String, разделите вашу строку следующим образом

var SplitInfo = originalInfo.components(separatedBy: "\n") 

Это вернет [String] вместо подстрок.

Надеюсь, это поможет.

  • Редактировать на основании комментария ОП *
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...