Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
添加googleobjective-capi';GTL&x27;到iPhone项目_Objective C_Xcode_Api_Sdk_Google Drive Api - Fatal编程技术网

添加googleobjective-capi';GTL&x27;到iPhone项目

添加googleobjective-capi';GTL&x27;到iPhone项目,objective-c,xcode,api,sdk,google-drive-api,Objective C,Xcode,Api,Sdk,Google Drive Api,如何将Google Drive API添加到我的iPhone项目中,以便我可以使用它 到目前为止,我已经将GTL项目拖到了我当前的应用程序项目中(因此它嵌套在我的应用程序项目下)。然后,在我的应用目标的构建阶段,我添加了GTL.framework,然后将GTL.framework添加到我的“链接二进制文件与库”(见附图)。这会引发以下错误: clang: error: no such file or directory: '/Users/xxx/Library/Developer/Xcode/D

如何将Google Drive API添加到我的iPhone项目中,以便我可以使用它

到目前为止,我已经将GTL项目拖到了我当前的应用程序项目中(因此它嵌套在我的应用程序项目下)。然后,在我的应用目标的构建阶段,我添加了GTL.framework,然后将GTL.framework添加到我的“链接二进制文件与库”(见附图)。这会引发以下错误:

clang: error: no such file or directory: '/Users/xxx/Library/Developer/Xcode/DerivedData/Golf-hfbczyaemhyzgvbrtgdxqnlzeuaa/Build/Products/Debug-iphonesimulator/GTL/GTL'
我该如何解决这个问题


我也很难处理这个错误消息。我就是这样解决的:

确保已在GTLSource/Common/(例如,为GoogleDrive添加驱动器文件夹)下为正在使用的服务添加文件夹

在GTL.xcodeproj(您已经添加到您的工作区)下,找到GTLSource文件夹,并将其拖动到您的主项目(在您的案例中是高尔夫)。完成了

现在,您可以删除对已添加到工作区的GTL.xcodeproj的引用

使用这种方法,您甚至不需要添加库(因此,如果已经添加了库,请将它们从链接库列表中删除)

谷歌API文档与苹果的文档完全不同(不好)

我还应该提到,我正在为iOS而不是MacOSX构建一个应用程序,但这也应该适用于OSX


不仅要执行上述操作,还要进入“[项目名称]目标->构建阶段>编译源代码”并单击+按钮。然后添加所有的.m文件,由于某些原因,大多数文件不会自动添加


我还不得不从驱动器文件夹中删除(对“GTLDrive_soces.m”的引用),但我不明白为什么我必须这么做。

今天大部分时间我都在为这个问题苦苦挣扎,我觉得非常沮丧。我终于弄明白了这一切,所以这里有一个简单的分步指南,介绍如何使用XCode5、使用ARC将Google API添加到iOS7项目中,而不必创建工作区或任何其他内容

RawMean提供的答案很有效,但它给了我ARC的问题。我也不喜欢这样一个事实,你必须添加项目,创建一个工作区,然后删除项目。因此,我的解决方案将处理这两个问题

  • 查看代码。为此,您可以运行
    svn checkouthttp://google-api-objectivec-client.googlecode.com/svn/trunk/ google api objectivec客户端从您的终端只读
    。我将此代码称为“谷歌代码”
  • 转到项目的构建阶段。展开“将二进制文件链接到库”并添加
    安全性.framework
    系统配置.framework
    。这两个是谷歌代码所要求的
  • 转到项目的生成设置。使用此处的搜索框,查找
    其他链接器标志
    (确保在搜索框左侧选择了“全部”)。添加
    -ObjC-all_load
  • 现在搜索
    用户标题搜索路径
    ,并将完整路径添加到Goggle的
    /Source
    目录。确保您选择了递归
  • 使用Finder,进入Google的
    /Source/OAuth2/Touch
    目录。将
    GTMOAuth2ViewTouch.xib
    拖放到项目中
  • 返回Finder并转到Google的
    /Source
    目录。将
    GTLCommon\u Sources.m
    GTLCommon\u Networking.m
    拖放到项目中
  • 现在,您需要为要使用的服务导入文件。在我的例子中,我需要使用GoogleDrive,所以我将添加这些。在finder中,转到Google的
    /Source/Services/Drive/Generated
    目录。将
    GTLDrive.h
    GTLDrive_Sources.m
    拖放到项目中。如果要使用其他服务,请转到它们的目录并导入相应的.h和.m文件
  • 由于某些原因,Google的代码不使用ARC,所以如果您现在尝试构建,您将得到ARC编译错误。因此,我们只需要为谷歌的代码禁用ARC。要做到这一点,请返回到项目的构建阶段,但这次要扩展“编译源代码”。确保
    GTLCommon\u Sources.m
    GTLCommon\u Networking.m
    都在那里。选择它们,按enter键并键入
    -fno objc arc
    。这将为它们两个禁用ARC。确保不为任何其他文件添加此选项(除非您知道自己在做什么)
  • 你完了!现在,只要想使用Google的API,就只需导入
    GTMOAuth2ViewControllerTouch.h
    和服务头。在我的例子中,因为我使用的是Google Drive,所以我还将导入
    GTLDrive.h
  • 我希望这能帮助和拯救一些人,使他们不至于把头发都拔出来

    更好地使用Pod

  • 如何在Xcode项目中安装CoCoapod和安装程序 供参考:[
  • 打开pod文件并添加

    pod'Google API Client/Drive',“~>1.0”保存pod文件并在终端中调用pod安装。注意:pod文件必须提供链接 此行后的“您的项目名称”、“您的项目名称测试”仅添加 你的图书馆


  • 这并不能真正解决安装谷歌API的问题,但在这个repo中,我从iOS应用程序访问了谷歌表单,而没有使用谷歌API

    因此,在某些项目中,您可能会跳过安装API部分

    以下是如何设置它的教程:

    下面是执行此操作的代码:

    private static var googleFormLink: String!
    private static var googleFormAppVersionField: String!
    private static var googleFormUserInfoField: String!
    private static var googleFormMethodInfoField: String!
    private static var googleFormErrorTextField: String!
    
    /// Setup Google Form links
    static func setupOnlineLogs(#formLink: String, versionField: String, userInfoField: String, methodInfoField: String, textField: String) {
        googleFormLink = formLink
        googleFormAppVersionField = versionField
        googleFormUserInfoField = userInfoField
        googleFormMethodInfoField = methodInfoField
        googleFormErrorTextField = textField
    }
    
    private static func sendError(#text: String) {
        var url = NSURL(string: googleFormLink)
        var postData = googleFormAppVersionField + "=" + text
        postData += "&" + googleFormUserInfoField + "=" + "anothertext"                
        postData += "&" + googleFormMethodInfoField + "=" + "anothertext" 
        postData += "&" + googleFormErrorTextField + "=" + "anothertext" 
    
        var request = NSMutableURLRequest(URL: url!)
        request.HTTPMethod = "POST"
        request.setValue("application/x-www-form-urlencoded; charset=utf-8", forHTTPHeaderField: "Content-Type")
        request.HTTPBody = postData.dataUsingEncoding(NSUTF8StringEncoding)
        var connection = NSURLConnection(request: request, delegate: nil, startImmediately: true)
    }
    

    我又遇到了这个问题,忘记了我以前已经解决了这个问题,登陆到这个页面时意识到我实际上已经发布了这个解决方案:)要快速解决这个问题,请使用Rob的答案并查看我自己的@RawMean,你所说的“确保你已经为你在GTLSource/Common/下使用的服务添加了文件夹”到底是什么意思(例如,为GoogleDrive添加驱动器文件夹)。“驱动器文件夹中有什么?TNX很有效,尽管它抱怨“OSX XIB不支持目标设备‘ipad’”(我使用XCode7.1.1)——我刚刚删除了引用