Facebook SDK Swift — использование необъявленного идентификатора

Я получаю Use of undeclared identifier за каждый объект Facebook, который я использую

Следуя этому руководству: РУКОВОДСТВО: КАК ПОДЕЛИТЬСЯ В FACEBOOK SDK 4.1.X ДЛЯ SWIFT

Но у меня есть следующая ошибка:

введите описание изображения здесь

Я добавил фреймворк Facebook черезcocopods:

pod 'FBSDKCoreKit'
pod 'FBSDKShareKit'

И он был успешно установлен

введите описание изображения здесь

Я добавил соединительный заголовок

#ifndef Bridging_Header_h
#define Bridging_Header_h

#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKShareKit/FBSDKShareKit.h>

#endif /* Bridging_Header_h */

Заголовок моста подключен:

введите описание изображения здесь

Я настроил свой .plist

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb*****</string>
            </array>
        </dict>
    </array>
    <key>FacebookAppID</key>
    <string>*****</string>
    <key>FacebookDisplayName</key>
    <string>*****</string>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>facebook.com</key>
            <dict>
                <key>NSIncludesSubdomains</key> <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/>
            </dict>
            <key>fbcdn.net</key>
            <dict>
                <key>NSIncludesSubdomains</key> <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>  <false/>
            </dict>
            <key>akamaihd.net</key>
            <dict>
                <key>NSIncludesSubdomains</key> <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/>
            </dict>
        </dict>
    </dict>

Вот код:

let content : FBSDKShareLinkContent = FBSDKShareLinkContent()
        content.contentURL = NSURL(string: "<INSERT STRING HERE>")
        content.contentTitle = "<INSERT STRING HERE>"
        content.contentDescription = "<INSERT STRING HERE>"
        content.imageURL = NSURL(string: "<INSERT STRING HERE>")

        let button : FBSDKShareButton = FBSDKShareButton()
        button.shareContent = content
        button.frame = CGRectMake((UIScreen.mainScreen().bounds.width - 100) * 0.5, 50, 100, 25)
        self.view.addSubview(button)

person Luda    schedule 25.10.2015    source источник
comment
вы запустили pod install или попробуйте запустить его снова   -  person Omkar Guhilot    schedule 25.10.2015
comment
@OmkarGuhilot Я сделал. Это работало нормально. Фреймворки находятся в моем проекте Pods.   -  person Luda    schedule 25.10.2015
comment
Итак, это решено и решило ли это, снова запустив pod install?   -  person Omkar Guhilot    schedule 26.10.2015
comment
@OmkarGuhilot, нет. Получение фреймворка с помощью модуля не было проблемой. Проблема в том, что фреймворк не распознается   -  person Luda    schedule 26.10.2015
comment
Подтвердите следующее: 1. Флаг компоновщика в настройках сборки установлен на -ObjC 2. операторы импорта присутствуют в верхней части ваших файлов swift для ресурсов facebook, которые вы пытаетесь вызвать   -  person Kashif    schedule 28.10.2015
comment
@Kashif, 1. У меня есть связанный флаг -ObjC 2. Нет. Что именно я должен импортировать? .h файлы в Swift?   -  person Luda    schedule 29.10.2015
comment
Когда я это делаю (например, импортирую FBSDKAccessToken.h), он пишет Нет такого модуля «FBSDKAccessToken.h».   -  person Luda    schedule 29.10.2015
comment
вы в Swift или Objective-C? Не могли бы вы привести пример кода, который вы пытаетесь написать?   -  person thibaut noah    schedule 29.10.2015
comment
Не могли бы вы показать мне 2 объекта, которые вы получаете Использование необъявленного идентификатора, мне нужно оценить, какой заголовок импортирует ваш отсутствующий   -  person Brian Nezhad    schedule 30.10.2015
comment
Это не имеет ничего общего с вашим .plist   -  person Brian Nezhad    schedule 30.10.2015
comment
@thibautnoah, я обновил вопрос, указав свою ошибку и код   -  person Luda    schedule 01.11.2015
comment
@FarhadNezhad, я обновил вопрос   -  person Luda    schedule 01.11.2015
comment
@Luda Похоже, кто-то ответил :) Удачного кодирования.   -  person Brian Nezhad    schedule 01.11.2015
comment
Спасибо, я нашел свой ответ на ваш вопрос. :)   -  person Mihir Oza    schedule 26.12.2016


Ответы (3)


Если вы используете поды и ваш проект работает на Swift, вам не нужно импортировать заголовки из подов в Bridging_Header_h. Достаточно импортировать необходимый SDK в ваш быстрый файл, например:

import FBSDKCoreKit
import FBSDKLoginKit
import FBSDKShareKit
person Iurie Manea    schedule 01.11.2015
comment
Это верно. Кроме того, вы можете пойти дальше и даже инициировать переменную для классов. Хороший улов Лурье. - person Brian Nezhad; 01.11.2015

Первый шаг — создать подфайл, например:

use_frameworks!
pod 'ChameleonFramework/Swift'
pod 'GBDeviceInfo'

Сохраните файл и установите или обновите модули с помощью команды:

pod install / pod update

Далее следует добавить в общие настройки рамки:

введите здесь описание изображения

person Paweł Sternik    schedule 30.10.2015
comment
Я добавил предложенные вами фреймворки, но это не помогло :( i65.tinypic.com/ 20l1idk.png - person Luda; 01.11.2015

Для пользователей Swift: Facebook Swift SDK 0.7.0 и 0.8.0 кажутся полностью FUBAR, нет никакого способа заставить импорт работать должным образом даже в совершенно новом проекте.

Вернитесь к 0.6.0, указав следующее в Podfile, и учебники и импорт снова будут работать:

pod 'FacebookCore', '~> 0.6.0'
pod 'FacebookLogin', '~> 0.6.0'
pod 'FacebookShare', '~> 0.6.0' 
person Simon Epskamp    schedule 22.08.2019