小编mgy*_*yky的帖子

应用程序因缺少使用说明而被拒绝(Xcode8)

所以我今天收到这封邮件说我的应用程序的最新版本被iTunes Connect拒绝了,原因是一些用法描述丢失了.确切地说:

此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSContactsUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSCalendarsUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSPhotoLibraryUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSBluetoothPeripheralUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSMicrophoneUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSMotionUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.

一旦纠正了这些问题,您就可以重新更新已更正的二进制文件.

我发现这些已经成为iOS 10的强制要求,但唯一的问题是我的应用程序没有请求访问这些中的任何一个的权限..我认为只有在您真正请求许可时才需要说明吗?

是因为我的一个依赖项(Cocoapods)可能包含一些代码来请求这些权限吗?或者即使我从未要求查看用户日历,联系人等,这些描述是否必须?

itunesconnect ios ios10 xcode8

90
推荐指数
4
解决办法
8万
查看次数

如何在将CocoaPods更新到0.36.x及更高版本后引用Bridging-Header.h中的头文件?

更新到CocoaPods 0.36.x后,我无法将导入添加到我的Bridging-Header.h文件中.我得到"找不到DBSphereView.h文件".

该文件确实存在于:

"Pods/DBSphereTagCloud/DBSphereView.h"
"Headers/public/DBSphereTagCloud/DBSphereView.h"
"Headers/private/DBSphereTagCloud/DBSphereView.h"
Run Code Online (Sandbox Code Playgroud)

我的桥文件:

#ifndef Loan_Bridging_Header_h
#define Loan_Bridging_Header_h
#import "DBSphereView.h"
#endif
Run Code Online (Sandbox Code Playgroud)

我可以使用框架.我参考了一个众所周知的框架(Alamofire),它很棒!

我的podfile:

source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
pod 'DBSphereTagCloud', '~> 1.0'
pod 'Alamofire', '~> 1.1'
Run Code Online (Sandbox Code Playgroud)

在更新之前,我没有导入头文件的问题.

在将CocoaPods更新为0.36.x后,如何在Bridging-Header.h中引用头文件?

谢谢!

编辑:

我还尝试根据cocoapods.org的"Get Started"示例创建一个单独的项目,但没有成功.使用框架后,我似乎无法在我的桥接头文件中引用头文件.我一定错过了一些细节?

ios ios-frameworks cocoapods swift

47
推荐指数
2
解决办法
3万
查看次数

Xcode中的Pod错误"Id:框架未找到Pods"

我试图从bitbucket存储库克隆一个项目,并Id: framework not found Pods clang: error: linker command failed with exit code 1 (use -v to see invocation)在尝试在工作区中运行Xcode项目时收到错误.这些是我遵循的步骤,如果有人能让我知道我做错了什么,那就太好了!

  1. git clone (link to bitbucket)
  2. 将Xcode pods项目中的配置设置更改none为调试和发布
  3. 执行 pod install
  4. 打开Xcode工作区文件
  5. 试图在Xcode中构建并收到错误 Id: framework not found Pods clang: error: linker command failed with exit code 1 (use -v to see invocation)

编辑这是podfile:

# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'

target 'Oncarb' do
  pod 'Alamofire'
  pod …
Run Code Online (Sandbox Code Playgroud)

git xcode ios ios-frameworks cocoapods

39
推荐指数
3
解决办法
4万
查看次数

Swift - 如何遍历NSDictionary

嗨,我正在学习Swift,我想从JSON Api中提取数据,我的Swift代码看起来像这样.具体来说,我需要提取每个键及其值,(例如:打印标题值,封面等).

//Json request
var error: NSError?
var raw = NSString.stringWithString("http://example.com/MovieAPI/api/v1/movies/")
var api_url = NSURL.URLWithString(raw)
let jsonData: NSData = NSData.dataWithContentsOfURL(api_url, options: nil, error: &error)
let result = NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &error)
as NSDictionary
for val in result {
   for (var i=0; i < val.value.count; i++){
       //println(val.value.valueAtIndex(3)) Not Working
   }
}
Run Code Online (Sandbox Code Playgroud)

而我的JSON的结构是

{
  data: [
      {
        id: 2,
        title: "Hunger Games",
        cover: "http://example.com",
        genre: 2
       }
  ]
}
Run Code Online (Sandbox Code Playgroud)

救命!

json nsdictionary ios swift

23
推荐指数
1
解决办法
4万
查看次数

如何使用特定版本的CocoaPods

在升级或安装Podfile时我是否可以以某种方式具体使用我想要使用的CocoaPods版本?我曾多次遇到Podfiles使用一个版本的CocoaPods而不是其他版本的版本.

例如,我正在寻找的语法如下所示:

pod -v 0.34 install
Run Code Online (Sandbox Code Playgroud)

ios cocoapods

21
推荐指数
2
解决办法
2万
查看次数

生成pods项目时出错 - Pod安装

我有一个使用可可豆荚的工作项目.我尝试'pod install'并得到了这个奇怪的错误:

Generating Pods project
  - Creating Pods project
  - Adding source files to Pods project
  - Adding frameworks to Pods project
  - Adding libraries to Pods project
  - Adding resources to Pods project
  - Linking headers
  - Installing targets
    - Installing target `Pods-NIDropDown` iOS 7.0
    - Installing target `Pods-SDWebImage` iOS 7.0
    - Installing target `Pods-SQCommonUtils` iOS 7.0
    - Installing target `Pods` iOS 7.0
  - Running post install hooks
  - Writing Xcode project file to `Pods/Pods.xcodeproj`
2015-06-27 01:20:37.359 ruby[3841:138874] [MT] …
Run Code Online (Sandbox Code Playgroud)

ios cocoapods

19
推荐指数
3
解决办法
7623
查看次数

使用您生成的应用专用密码登录。如果您忘记了应用专用密码或需要创建一个新密码 -22938

当我尝试通过 Fastlane 发送我的应用程序时,我遇到了以下错误:

使用您生成的应用专用密码登录。如果您忘记了应用专用密码或需要创建一个新密码,请访问 appleid.apple.com (-22938)

Transporter 传输失败。使用您生成的应用专用密码登录。如果您忘记了应用专用密码或需要创建一个新密码,请访问 appleid.apple.com (-22938) 您的帐户已启用两步验证。请前往 https://appleid.apple.com/account/manage并为 iTunes Transporter 生成一个应用程序特定密码,用于上传构建。要使用环境变量在 CI 机器上设置应用程序特定密码,您可以设置 FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD 变量。

请提供您的 Apple Developer Program 帐户凭据您输入的登录信息将存储在您的 macOS 钥匙串密码中(xxx@yyy.com 的特定应用程序)

continuous-integration ios fastlane app-store-connect

18
推荐指数
4
解决办法
8523
查看次数

从项目中删除Pod - xcode

我正在尝试从我的项目中删除pod.在我删除所有文件和所有我收到此消息后

diff: /../Podfile.lock: No such file or directory
diff: /Manifest.lock: No such file or directory
error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
Run Code Online (Sandbox Code Playgroud)

我试图从项目中删除pod,重新安装它们,从构建阶段删除脚本,没有任何工作.

xcode ios cocoapods

17
推荐指数
3
解决办法
3万
查看次数

Xcode无法看到通过Cocoapods添加的对象

我已经podfile定义了以下pod.

platform :ios, '8.0'
use_frameworks!

target 'LifeStream' do
pod 'SSKeychain'
pod 'LiveSDK'
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift-2.0'
end
Run Code Online (Sandbox Code Playgroud)

我安装了pod并打开了我的工作区.我发现Alamofire的任何使用都可以正常工作,因为它将Swift 2版本作为框架导入项目.

当我尝试使用SSKeychain课程时,我会收到一个

使用未解析的标识符'SSKeychain`

同样适用于我尝试在LiveSDK中使用的任何类.

我的项目根目录中有一个桥头,项目配置为使用它.

#ifndef Header_h
#define Header_h

#import "SSKeychain/SSKeychain.h"
#import "LiveSDK/LiveConnectClient.h"

#endif /* Header_h */
Run Code Online (Sandbox Code Playgroud)

如果我改变了#import

#import "SSKeychain/SSKeychain.h"
Run Code Online (Sandbox Code Playgroud)

#import "SSKeychain.h"
Run Code Online (Sandbox Code Playgroud)

Xcode无法编译,因为它无法找到该文件.所以我假设桥接头正在工作,因为我的桥接头现在构建的方式不会因为找不到头而导致任何编译器错误.

桥头

Objective-c桥接头

框架搜索路径

我还将项目根目录添加到框架搜索路径中.

框架搜索路径

链接的框架

最后,我还将所有框架链接到项目中.

链接框架

我的设置错过了什么吗?我已经有一周没能让Cocoapods在我的项目上工作了.我甚至创建了一个全新的项目,认为我的搞砸了; 这没有改变一件事.我不知道该怎么做才能解决这个问题.

编辑

在做了一些额外的研究之后,我发现了一篇博文,显示你必须在用户标题搜索中包含你的Pods目录

用户标题搜索

一位评论者还提到,如果您使用较新的Cocoapods Frameworks支持Swift,则需要包含Frameworks/**搜索路径.我已经包含了Pods/**和Frameworks/**但仍有相同的问题.

进一步阅读之后,它开始听起来像是Cocoapods的限制.据我所知,您不能在项目中同时使用库和框架.

xcode ios cocoapods xcode7-beta2

16
推荐指数
2
解决办法
1万
查看次数

在 Swift 中调用实例方法错误消息没有完全匹配

我以前从未得到过这个,Swift 中此错误消息的含义是什么:

No exact matches in call to instance method 'dataTask(with:completionHandler:)'
Run Code Online (Sandbox Code Playgroud)

这是我的代码块:

var request: NSMutableURLRequest? = nil
let task = URLSession.shared.dataTask(
            with: request,
            completionHandler: { data, response, error in
                DispatchQueue.main.async(execute: {
                  /// ...
                })
            })
        task.resume()
Run Code Online (Sandbox Code Playgroud)

错误报告

通过feedbackassistant.apple.com 报告:

FB7717686

xcode swift swift5

13
推荐指数
3
解决办法
2万
查看次数