我正在尝试使用FBSDKCoreKit
和添加Facebook登录功能FBSDKLogin
.当我尝试将这两个框架导入我的AppDelegate
文件时,它显示错误
"没有这样的模块'FBSDKCoreKit'".
我改变Allow Non-modular Includes In Framework Modules
从NO
到YES
,但错误依然存在.
我需要帮助来提出解决方案以解决错误.
在使用Swift的Xcode 6和7的早期版本中,这种语法可以工作:
var secureItemValue: Unmanaged<AnyObject>?
let statusCode: OSStatus = SecItemCopyMatching(keychainItemQuery, &secureItemValue)
if statusCode == errSecSuccess
{
let opaquePointer = secureItemValue?.toOpaque()
let secureItemValueData = Unmanaged<NSData>.fromOpaque(opaquePointer!).takeUnretainedValue()
// Use secureItemValueData...
}
Run Code Online (Sandbox Code Playgroud)
但是,在Xcode 7 beta 4中,SecItemCopyMatching声明已更改:
旧: func SecItemCopyMatching(_ query: CFDictionary, _ result: UnsafeMutablePointer<AnyObject?>) -> OSStatus
新: func SecItemCopyMatching(_ query: CFDictionary!, _ result: UnsafeMutablePointer<Unmanaged<AnyObject>?>) -> OSStatus
...现在secureItemValue类型不匹配.
在提取结果之前,这个机制很混乱,我希望新声明在某种程度上更容易,但我不知道如何为secureItemValue变量声明正确的类型并提取结果.
我正在使用Xcode 7 Beta 4.最初我使用的是Cocoapods版本0.38.2,当我pod install --verbose
在终端中运行它说它下载了Bolts,FBSDKCoreKit,FBSDKLoginKit,FBSDKShareKit,FBSDKMessengerShareKit和适用于iOS 8.1的 Pods的依赖项.使用此设置我的应用程序编译成功.下面是我用于导入Facebook SDK的Podfile和Objective-C桥接文件(因此Swift识别其引用的方法和Objective-C类).请注意,我的Podfile中显示的特定版本也是安装的版本,即使我在撰写本文时没有明确指定它们.
xcodeproj '/Users/<my_username>/MyApp/MyApp.xcodeproj'
pod "FBSDKCoreKit", "~> 4.7.0";
pod "FBSDKLoginKit", "~> 4.7.0";
pod "FBSDKShareKit", "~> 4.7.0";
pod "FBSDKMessengerShareKit", "~> 1.3.1";
Run Code Online (Sandbox Code Playgroud)
#ifndef MyAppObjCBridging_h
#define MyAppObjCBridging_h
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
#import <FBSDKMessengerShareKit/FBSDKMessengerShareKit.h>
#import <FBSDKShareKit/FBSDKShareKit.h>
#endif
Run Code Online (Sandbox Code Playgroud)
控制台显示消息"CocoaPods 0.39.0可用.要更新使用:gem install cocoapods.在我们达到1.0版本之前,CocoaPods的功能可以并且将会改变.我们强烈建议您始终使用最新版本.",所以我通过sudo gem install cocoapods
在终端执行安装了最新版本的Cocoapods 0.39.0 .
但是当我编译我的应用程序时,它给了我以下错误:
/Users//MyApp/MyApp/MyAppObjCBridging.h:14:9:找不到'FBSDKCoreKit/FBSDKCoreKit.h'文件
在Xcode中我"产品>清洁"(CMD + SHIFT + K),但这没有任何区别.所以我sudo gem uninstall cocoapods
在终端(其中列出了0.38.2和0.39.0作为当前安装的版本)和从列表中选择版本0.39.0以卸载最新版本并恢复到0.38.2.然后我跑了pod install --verbose
.当我尝试编译我的应用程序时,它已成功编译并再次在Simulator中运行.
当我使用Cocoapods版本0.39.0而不是旧版本0.38.2时,为什么会出现无法找到"FBSDKCoreKit/FBSDKCoreKit.h"的错误?
如果使用Cocoapods版本0.38.2(用我的应用程序编译的版本)我决定添加 …
我必须在App Store上传我的应用程序才能使用Test Flight进行一些内部测试.即使我仍在使用测试版,根据这个问题,这是可能的.是否可以将iOS应用程序上传到App Store,以便从Xcode 7 beta进行内部测试?
不幸的是我无法做到这一点.首先是一些细节,我的应用名称是Workout,我已经为iOS 9和watchOS 2创建了一个应用程序.在照片中你可以看到我项目中最大的一个(由Xcode自动创建).
我尝试过很多配置,这里有一些a)(有六种设置,比如图中的六个图标)
Workout (the blue icon)-> Code Signing Identity: automatic, Provisioning Profile: App Store Distribution
Workout (the light blue monochromatic icon)-> Code Signing Identity: iPhone Developer, Provisioning Profile: App Store Distribution
WorkoutTests-> Code Signing Identity: iOS Developer, Provisioning Profile: Automatic
WorkoutUITests-> The same as above
Workout WatchKit App-> Code Signing Identity: iPhone Developer, Provisioning Profile: App Store Distribution WatchKit
Workout WatchKit Extension-> Code Signing Identity: iPhone Developer, Provisioning Profile: App Store …
Run Code Online (Sandbox Code Playgroud) provisioning-profile testflight watchkit watchos-2 xcode7-beta4
我通过Watch上的Xcode 7(beta 4)启动My Watch应用程序时可以构建并运行良好,但是当我尝试通过点击其图标在Watch上启动应用程序时,它永远不会启动并显示~1的旋转圈分钟,然后回到表盘.
我试图通过Xcode 7.0将Swift v1.2项目转换为Swift v2.0项目.
我在构建过程中得到了这个:
Swift在构造此模块的ast上下文时遇到致命错误:缺少必需的模块'SwiftShims'调试器中将无法使用此模块中的调试信息.
什么是'SwiftShims'模块?
如果它丢失了我该如何安装呢?
我试图将联系人框架导入我的xcode7,我已经从构建阶段添加了联系人框架,我已经声明了
import UIKit
import Contacts
Run Code Online (Sandbox Code Playgroud)
但它显示错误说 /Users/anonymous/Desktop/Contacts/Contacts/ViewController.swift:10:8: Cannot import module being compiled
我最近开始将我的应用程序更新为Swift 2.0,但是我遇到了一个问题,在SO上有一百个不同的答案,其中没有一个似乎与我的问题有关.
(这在将应用程序更新到Swift 2.0之前有效),但我找不到任何更改手势识别器的更改?
这是我得到的完整错误:
[Stocks.SidePanelViewController proFormulaTapGesture]:无法识别的选择器发送到实例0x14f06ae00
由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [Stocks.SidePanelViewController proFormulaTapGesture]:无法识别的选择器发送到实例0x14f06ae00'
***第一掷调用堆栈:(0x1830904d0 0x197afff9c 0x1830971ec 0x183094188 0x182f9920c 0x188c3c58c 0x188899b50 0x18872d104 0x188c3bc30 0x1886ed28c 0x1886eb3ac 0x18872b088 0x18872a5ec 0x1886fb908 0x1886f9fac 0x183047d6c 0x183047800 0x183045500 0x182f75280 0x18e0ec0cc 0x188762df8 0x100158184 0x1983428b8)的libc ++ abi.dylib:与类型NSException的未捕获的异常终止
这是一个简单的点击手势.但它似乎不再认识选择器了.
这是我用来设置识别器的代码:
let proFormulaTap = UITapGestureRecognizer()
proFormulaTap.addTarget(self, action:"proFormulaTapGesture")
proFormulaView.addGestureRecognizer(proFormulaTap)
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试运行的功能:
func proFormulaTapGesture() throws {
print("proFormulaTapGesture")
selectView(proFormulaView)
selectedMenuItem = 0
Formula = 1
menuTabBarController.selectedIndex = 0
navigationController?.navigationBar.topItem!.title = "BASIC FORMULA"
try (menuTabBarController.viewControllers as! [SuggestionsViewController])[0].loadSuggestions()
}
Run Code Online (Sandbox Code Playgroud)
但是因为它从不在控制台中打印"proFormulaTapGesture".我绝对认为错误发生在函数之前.提示选择器的错误也提示.
显然,自更新到Swift 2.0以来,try/catch已被添加到函数中,但在tapGestureRecognizer的设置中没有任何改变.
我尝试删除"抛出"并尝试从该功能,但问题仍然存在.我也试过制作一个按钮而不是一个轻敲手势识别器.但我仍然得到相同的错误,暗示它可能是选择器(功能)的问题,而不是点击手势/按钮.但是我的应用程序中的所有其他按钮都可以正常工作?
我还尝试重命名选择器/功能和点击手势识别器.还是一样.
原始代码是用Swift编写的,而不是Obj-C.在Apple的代码转换到Swift 2.0期间添加了throws和try
任何有关为什么突然被打破的帮助将不胜感激.
谢谢!
xcode7-beta4 ×8
swift2 ×4
ios ×3
ios9 ×3
swift ×3
watchkit ×2
apple-watch ×1
cocoapods ×1
frameworks ×1
testflight ×1
watchos-2 ×1
xcode7 ×1