我仍然在我的项目中使用Objective-C,因为它是遗留的。之前我正在使用Parse,现在我正在尝试添加FB集成。我设法编译所有内容 - 这些是我通过CocoaPods安装的。
-(void) viewDidAppear:(BOOL)animated
{
// Do any additional setup after loading the view, typically from a nib.
if (![PFUser currentUser] || // Check if user is cached
![PFFacebookUtils isLinkedWithUser:[PFUser currentUser]]) { // Check if user is linked to Facebook
PFLogInViewController *logInController = [[PFLogInViewController alloc] init];
logInController.fields = (PFLogInFieldsUsernameAndPassword
| PFLogInFieldsFacebook
| PFLogInFieldsDismissButton);
[self presentViewController:logInController animated:YES completion:nil];
[self presentViewController:loginViewController animated:YES completion:NULL];
} else {
NSLog(@"User is cached and showing content.");
}
}
这是我的代码。
FirstViewController
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'You must initialize PFFacebookUtils with a call to +initializeFacebookWithApplicationLaunchOptions'
当视图显示并点击登录Facebook时,我有这个错误。
[PFFacebookUtils initializeFacebookWithApplicationLaunchOptions:launchOptions];
如果我在AppDelegate上添加这个,
initializeFacebookWithApplicationLaunchOptions
我遇到了编译问题 - 没有已知的类。
基于this,我应该在PFFacebookUtils中添加一个临时hack,但该文件中不存在方法[PFFacebookUtils initializeFacebook];
。
我也尝试在我的AppDelegate中添加它。
+[PFFacebookUtils initializeFacebook]: unrecognized selector sent to class 0x10024f420
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[PFFacebookUtils initializeFacebook]: unrecognized selector sent to class 0x10024f420'
在这种情况下,错误是:
package com.aa.qc.task;
import android.os.AsyncTask;
import com.aa.qc.callbacks.ZleceniaLoadedListner;
import com.aa.qc.extras.ZleceniaSorter;
import com.aa.qc.extras.ZleceniaUtils;
import com.aa.qc.network.VolleySingleton;
import com.aa.qc.pojo.Zlecenia;
import com.android.volley.RequestQueue;
import java.util.ArrayList;
public class TaskLoadZlecenia extends AsyncTask<Void, Void, ArrayList<Zlecenia>>{
private ZleceniaLoadedListner myComponent;
private VolleySingleton volleySingleton;
private RequestQueue requestQueue;
private ZleceniaSorter mSorter = new ZleceniaSorter();
public TaskLoadZlecenia(ZleceniaLoadedListner myComponent) {
this.myComponent = myComponent;
volleySingleton = VolleySingleton.getsInstance();
requestQueue = volleySingleton.getmRequestQueue();
}
@Override
protected ArrayList<Zlecenia> doInBackground(Void... params) {
ArrayList<Zlecenia> listZlecenias = ZleceniaUtils.loadZlecenia(requestQueue);
mSorter.sortZleceniaByTime(listZlecenias);
return listZlecenias;
}
@Override
protected void onPostExecute(ArrayList<Zlecenia> listZlecenias) {
if (myComponent != null) {
myComponent.onZleceniaLoaded(listZlecenias);
}
}
}
任何想法/解决方案?
答案 0 :(得分:2)
确保您正在导入框架的V4
#import <ParseFacebookUtilsV4/PFFacebookUtils.h>
这是一个微妙的,但非常重要的区别,并且由于某种原因,它将只编译导入
#import <ParseFacebookUtils/PFFacebookUtils.h>
特别是如果你刚从普通的FB Utils切换。
答案 1 :(得分:0)
我遇到了同样的问题,所以我尝试删除Parse库并使用Cocoapods再次安装库,然后就可以了!我没有更改任何代码,只需将以下行添加到我的Podfile中:
pod 'Parse', '~> 1.7'
pod 'ParseFacebookUtilsV4', '~> 1.7'
我不知道为什么,但它确实有效。