Пытаюсь заставить это работать, но получаю сообщение об ошибке

«[Строка] не может быть преобразована в 'Строку'»

 var city = "Atlanta"
 var issueLocation = ["Atlanta","Montreal","Toronto","XXIIVV"]
 let locationRand = Int(arc4random() % 3)
 var passportIdent = "Issue Location: \(issueLocation[locationRand])"
 if (issueLocation == city){
  }
1
user3708761 18 Дек 2014 в 22:56

3 ответа

Лучший ответ
var city = "Atlanta"
var issueLocation = ["Atlanta","Montreal","Toronto","XXIIVV"]
let locationRand = Int(arc4random() % 3)
var passportIdent = "Issue Location: \(issueLocation[locationRand])"
if (issueLocation == city){
}

Должно быть

var city = "Atlanta"
var issueLocation = ["Atlanta","Montreal","Toronto","XXIIVV"]
let locationRand = Int(arc4random() % 3)
var passportIdent = "Issue Location: \(issueLocation[locationRand])"
var randCity = issueLocation[locationRand]
if (randCity== city){
}

Обратите внимание, как линия

var randCity = issueLocation[locationRand]

Фактически получает случайный элемент в вашем массиве issueLocation. Затем вы можете использовать это значение для сравнения с вашей переменной city.

1
Laurent Rivard 18 Дек 2014 в 20:39

Вы сравниваете массив строк с одной строкой. Это не имеет смысла, поэтому быстрый компилятор жалуется.

issueLocation - это массив строк, который swift обозначает как [String].
city, с другой стороны, является одним String. Обратите внимание на отсутствующие квадратные скобки.

Нет смысла сравнивать массив строк с одной строкой. Как одно может равняться многим?

Это ошибка. Непонятно, чего вы пытаетесь достичь (скажите нам), поэтому я ничем не могу помочь.

3
Triptych 18 Дек 2014 в 20:01

Посмотрите на ваше заявление, если:

if (issueLocation == city){
}

«city» - это строка, а «issueLocation» - это массив строк. Вы пытаетесь сравнить строку с массивом, но это не сработает.

1
DerStrom8 18 Дек 2014 в 20:02