Строковый литерал должен иметь префикс '@'. - PullRequest
0 голосов
/ 09 мая 2020

Я приехал из JS, поэтому я не уверен в строковых литералах.

В моем swift используется следующий синтаксис

[GMSServices provideAPIKey:@"ABCXYZ"];

если я удалю @ из приведенного выше, swift выдаст следующую ошибку: String literal must be prefixed by '@'

Может кто-нибудь объяснить мне, почему Я получаю эту ошибку, а что такое строковые литералы? Этот ответ не помог в приведенном выше контексте: Что делает префикс @ для строковых литералов в C#

1 Ответ

0 голосов
/ 09 мая 2020

Прежде всего, не размещайте ключи API в Inte rnet. Я отредактировал ваш вопрос, чтобы удалить ключ, но он все еще виден в истории вопросов.

В любом случае, приведенный вами код является кодом Objective- C, а не кодом Swift. Этот код объявляет литерал NSString. NSString - это класс Objective- C. В отличие от простой строки C, класс NSString предоставляет множество API-интерфейсов для использования и управления строками, а среда выполнения Objective- C управляет памятью NSString, поэтому вам не нужно.

В Swift эквивалентным кодом является

GMSServices.provideAPIKey("ABCXYZ")

Здесь мы используем литерал Swift String, который похож на NSString, со многими API и с автоматическим c управлением памятью, но нам не нужен префикс @, потому что Swift не является надмножеством C.

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