2015-05-21 3 views
0

Я устанавливаю логин для facebook для анализа. сайт анализа на https://www.parse.com/docs/ios/guide#users-facebook-users говорит:«PFFacebookUitils.Type» не имеет имени с именем 'initializeFacebook

Существует также два изменения кода, которые вам нужно будет сделать. Во-первых, добавьте в приложение следующее: doneFinishLaunchingWithOptions: метод после инициализации Parse SDK.

// Import this header into your Swift bridge header file 
#import <FBSDKCoreKit/FBSDKCoreKit.h> 
#import <ParseFacebookUtilsV4/PFFacebookUtils.h> 

// AppDelegate.swift 
func application(application: UIApplication,  didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    Parse.setApplicationId("parseAppId", clientKey:"parseClientKey") 
    PFFacebookUtils.initializeFacebookWithLaunchOptions(launch Options) 
} 

parsestaterproject в AppDelegate.swift говорит:

// If you are using Facebook, uncomment and add your FacebookAppID to your bundle's plist as 
    // described here: https://developers.facebook.com/docs/getting- started/facebook-sdk-for-ios/ 
    // Uncomment the line inside ParseStartProject- Bridging-Header and the following line here: 


    //PFFacebookUtils.initializeFacebook() 

Я попробовал оба варианта * .initializeFacebook и оба дают ту же ошибку: 'PFFacebookUtils.Type' не имеет элемент с именем «initializeFacebook ...

Мой код:

// AppDelegate.swift 
// 
// Copyright 2011-present Parse Inc. All rights reserved. 
// 

import UIKit 
import Bolts 
import Parse 

// If you want to use any of the UI components, uncomment this line 
// import ParseUI 

// If you want to use Crash Reporting - uncomment this line 
// import ParseCrashReporting 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    //-------------------------------------- 
    // MARK: - UIApplicationDelegate 
    //-------------------------------------- 

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:  AnyObject]?) -> Bool { 

     Parse.enableLocalDatastore() 

     //   ********************************************************** ****************** 
     // Uncomment this line if you want to enable Crash Reporting 
     // ParseCrashReporting.enable() 

      Parse.setApplicationId("RETRACTED_FOR_SECURITY", clientKey: "RETRACTED_FOR_SECURITY") 

    // var pushSettings: UIUserNotificationSettings = UIUserNotificationSettings(forTypes: .Alert, categories: nil) 

    // application.registerForRemoteNotifications(pushSettings) 
    // application.registerForRemoteNotifications() 



    // 
    // If you are using Facebook, uncomment and add your FacebookAppID to your bundle's plist as 
    // described here: https://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/ 
    // Uncomment the line inside ParseStartProject-Bridging-Header and the following line here: 


    //PFFacebookUtils.initializeFacebook() 

     PFFacebookUtils.initializeFacebookWithLaunchOptions(launchOptions) 
    // **************************************************************************** 

    PFUser.enableAutomaticUser() 

    let defaultACL = PFACL(); 

    // If you would like all objects to be private by default, remove this line. 
    defaultACL.setPublicReadAccess(true) 

    PFACL.setDefaultACL(defaultACL, withAccessForCurrentUser:true) 

    if application.applicationState != UIApplicationState.Background { 
     // Track an app open here if we launch with a push, unless 
     // "content_available" was used to trigger a background push (introduced in iOS 7). 
     // In that case, we skip tracking here to avoid double counting the app-open. 

     let preBackgroundPush = !application.respondsToSelector("backgroundRefreshStatus") 
     let oldPushHandlerOnly = !self.respondsToSelector("application:didReceiveRemoteNotification:fetchCompletionHandler:") 
     var noPushPayload = false; 
     if let options = launchOptions { 
      noPushPayload = options[UIApplicationLaunchOptionsRemoteNotificationKey] != nil; 
     } 
     if (preBackgroundPush || oldPushHandlerOnly || noPushPayload) { 
      PFAnalytics.trackAppOpenedWithLaunchOptions(launchOptions) 
     } 
    } 
    if application.respondsToSelector("registerUserNotificationSettings:") { 
     let userNotificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound 
     let settings = UIUserNotificationSettings(forTypes: userNotificationTypes, categories: nil) 
     application.registerUserNotificationSettings(settings) 
     application.registerForRemoteNotifications() 
    } else { 
     let types = UIRemoteNotificationType.Badge | UIRemoteNotificationType.Alert | UIRemoteNotificationType.Sound 
     application.registerForRemoteNotificationTypes(types) 
    } 

    return true 
} 

//-------------------------------------- 
// MARK: Push Notifications 
//-------------------------------------- 

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 

    let installation = PFInstallation.currentInstallation() 
    installation.setDeviceTokenFromData(deviceToken) 
    installation.saveInBackground() 

    PFPush.subscribeToChannelInBackground("", block: { (succeeded: Bool, error: NSError?) -> Void in 
     if succeeded { 
      println("ParseStarterProject successfully subscribed to push notifications on the broadcast channel."); 
     } else { 
      println("ParseStarterProject failed to subscribe to push notifications on the broadcast channel with error = %@.", error) 
     } 
    }) 
} 

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) { 
    if error.code == 3010 { 
     println("Push notifications are not supported in the iOS Simulator.") 
    } else { 
     println("application:didFailToRegisterForRemoteNotificationsWithError: %@", error) 
    } 
} 

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { 
    PFPush.handlePush(userInfo) 
    if application.applicationState == UIApplicationState.Inactive { 
     PFAnalytics.trackAppOpenedWithRemoteNotificationPayload(userInfo) 
    } 
} 

/////////////////////////////////////////////////////////// 
// Uncomment this method if you want to use Push Notifications with Background App Refresh 
/////////////////////////////////////////////////////////// 
// func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) { 
//  if application.applicationState == UIApplicationState.Inactive { 
//   PFAnalytics.trackAppOpenedWithRemoteNotificationPayload(userInfo) 
//  } 
// } 

//-------------------------------------- 
// MARK: Facebook SDK Integration 
//-------------------------------------- 

/////////////////////////////////////////////////////////// 
// Uncomment this method if you are using Facebook 
/////////////////////////////////////////////////////////// 
// func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool { 
//  return FBAppCall.handleOpenURL(url, sourceApplication:sourceApplication, session:PFFacebookUtils.session()) 
// } 

func application(application: UIApplication, 
    openURL url: NSURL, 
    sourceApplication: String?, 
    annotation: AnyObject?) -> Bool { 
     return FBSDKApplicationDelegate.sharedInstance().application(application, 
      openURL: url, 
      sourceApplication: sourceApplication, 
      annotation: annotation) 
} 

func applicationDidBecomeActive(application: UIApplication) { 
    FBSDKAppEvents.activateApp() 
} 


} 

мой файл app-bridge-h:

// ParseStarterProject-Bridging-Header.h 
    // 
    // Copyright 2011-present Parse Inc. All rights  reserved. 
// 

#define ParseStarterProject_Bridging_Header_h 
#define ParseStarterProject_Bridging_Header_h 

// If you are using Facebook, uncomment this line to  get automatic import of the header inside your project. 
//#import <ParseFacebookUtils/PFFacebookUtils.h> 


#import <FBSDKCoreKit/FBSDKCoreKit.h> 
#import <ParseFacebookUtilsV4/PFFacebookUtils.h> 


#endif 

ответ

0

Я нашел его. Это должно быть: PFFacebookUtils.initializeFacebookWithApplicationLaunchOptions (launchOptions). но обратите внимание, что в то время как это разрешает эту ошибку, код выше все еще приводит к другой ошибке, которую я буду публиковать в другом потоке: команда компоновщика не сработала с кодом выхода 1 (используйте -v для вызова вызова) -

Смежные вопросы