I'm trying to integrate Parse and Facebook's SDK with my app using Xcode 6.3 and am getting these errors when attempting to build:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_FBSDKAppEvents", referenced from:
__TMaCSo14FBSDKAppEvents in AppDelegate.o
"_OBJC_CLASS_$_FBSDKApplicationDelegate", referenced from:
__TMaCSo24FBSDKApplicationDelegate in AppDelegate.o
"_OBJC_CLASS_$_PFAnalytics", referenced from:
__TMaCSo11PFAnalytics in AppDelegate.o
"_OBJC_CLASS_$_PFFacebookUtils", referenced from:
__TMaCSo15PFFacebookUtils in AppDelegate.o
"_OBJC_CLASS_$_Parse", referenced from:
__TMaCSo5Parse in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
I don't know what this means, but I've tried many other solutions, such as cleaning, deleting the Derived Data folder, checking all of my frameworks, and I still can't solve the problem. If anyone has any idea how to fix this I would be very grateful. Thank you for your time.
Edit This is the Bridging-Header.h that I'm using:
#import <AFNetworking.h>
#import <BDBOAuth1RequestOperationManager.h>
#import <NSDictionary+BDBOAuth1Manager.h>
#import <UIImageView+AFNetworking.h>
#import <UIScrollView+SVInfiniteScrolling.h>
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
#import <FBSDKShareKit/FBSDKShareKit.h>
#import <Parse/Parse.h>
#import <ParseCrashReporting/ParseCrashReporting.h>
#import <ParseFacebookUtilsV4/PFFacebookUtils.h>
#import <Bolts/Bolts.h>
This is the AppDelegate.swift file:
import UIKit
import CoreData
import Parse
import FBSDKCoreKit
import FBSDKLoginKit
import Bolts
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)
// Type casting in swift is "as Type", you'll need to unwrap optionals however.
let tabBarController = self.window!.rootViewController as! UITabBarController
let tabBar = tabBarController.tabBar as UITabBar
// I prefer to use 0 based labels since the array is 0 based
let tabBarItem0 = tabBar.items![0] as! UITabBarItem
let tabBarItem1 = tabBar.items![1] as! UITabBarItem
let tabBarItem2 = tabBar.items![2] as! UITabBarItem
// The UIColor method you are using is an initializer in swift
tabBar.tintColor = UIColor(red: 62.0/255.0, green: 191.0/255.0, blue: 180.0/255.0, alpha: 1.0)
// UIImage also has an initializer for your situation in swift
tabBarItem0.selectedImage = UIImage(named: "Discover TabBar Select.pdf")
tabBarItem1.selectedImage = UIImage(named: "Me TabBar Select.pdf")
tabBarItem2.selectedImage = UIImage(named: "Settings TabBar Select.pdf")
//Facebook SDK Setup
FBSDKApplicationDelegate.sharedInstance()
Parse.setApplicationId("HxjVTJZ2rZA6qFBl0Xaji9z12HYQmTFPIXhVcfPp", clientKey:"8FJT7KHSmDPZi1AtpFS1GvTw39qevvB0JuimwWdS")
if let launchOptions = launchOptions {
PFFacebookUtils.initializeFacebookWithApplicationLaunchOptions(launchOptions)
} else {
PFFacebookUtils.initializeFacebookWithApplicationLaunchOptions([NSObject:AnyObject]())
}
// [Optional] Power your app with Local Datastore. For more info, go to
// https://parse.com/docs/ios_guide#localdatastore/iOS
Parse.enableLocalDatastore()
// [Optional] Track statistics around application opens.
PFAnalytics.trackAppOpenedWithLaunchOptions(launchOptions)
return true
}
func applicationDidBecomeActive(application: UIApplication) {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
FBSDKAppEvents.activateApp()
}
I dragged the latest Parse and Facebook SDK Frameworks into my project and added the required additional Frameworks (including the libsqlite3.dylib and libz.dylib) through the "Link Binary with Libraries" tab under the "Build Phases" section
I hope this additional information is useful.
After updating Parse to version 1.7.4, this problem fixed itself. Hopefully this helps other people who faced the same problem as me!