Xcode8 及iOS10适配问题汇总

上点干货,目前得知的一些bug解决汇总:
iOS10相册相机闪退bug
http://www.jianshu.com/p/5085430b029f
iOS 10 因苹果健康致使闪退 crash
http://www.jianshu.com/p/545bd1bf5a23
麦克风、多媒体、地图、通信录
ios10相机等崩溃
http://www.jianshu.com/p/ec15dadd38f3
iOS10 配置须知
http://www.jianshu.com/p/65f21dc5c556
iOS开发 适配iOS10以及Xcode8
http://www.jianshu.com/p/9756992a35ca
iOS 10 的适配问题
http://www.jianshu.com/p/f8151d556930
兼容iOS10资料整理笔记
http://www.jianshu.com/p/0cc7aad638d9?from=groupmessage&isappinstalled=0

 

1.Notification(通知)

自从Notification被引入以后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至如今iOS 10开始真正的进行大改重构,这让开发者也体会到UserNotifications的易用,功能也变得很是强大。php

iOS 9 之前的通知java

1.在调用方法时,有些方法让人很难区分,容易写错方法,这让开发者有时候很苦恼。ios

2.应用在运行时和非运行时捕获通知的路径还不一致。数组

3.应用在前台时,是没法直接显示远程通知,还须要进一步处理。xcode

4.已经发出的通知是不能更新的,内容发出时是不能改变的,而且只有简单文本展现方式,扩展性根本不是很好。缓存

iOS 10 开始的通知ruby

1.全部相关通知被统一到了UserNotifications.framework框架中。性能优化

2.增长了撤销、更新、中途还能够修改通知的内容。网络

3.通知不在是简单的文本了,能够加入视频、图片,自定义通知的展现等等。架构

4.iOS 10相对以前的通知来讲更加好用易于管理,而且进行了大规模优化,对于开发者来讲是一件好事。

5.iOS 10开始对于权限问题进行了优化,申请权限就比较简单了(本地与远程通知集成在一个方法中)。

若是使用了推送: 
这里写图片描述

iOS 10 通知学习相关资料:

UserNotifications: 苹果官方文档
-苹果官方视频1
- 苹果官方视频2
- 苹果官方视频3
活久见的重构 - iOS 10 UserNotifications 框架解析 WWDC2016 Session笔记 - iOS 10 推送Notification新特性

2.ATS的问题

iOS 9中默认非HTTS的网络是被禁止的,固然咱们也能够把NSAllowsArbitraryLoads设置为YES禁用ATS。不过iOS 10从2017年1月1日起苹果不容许咱们经过这个方法跳过ATS,也就是说强制咱们用HTTPS,若是不这样的话提交App可能会被拒绝。可是咱们能够经过NSExceptionDomains来针对特定的域名开放HTTP能够容易经过审核。

NSExceptionDomains方式 设置域。能够简单理解成,把不支持https协议的接口设置成http的接口。

具体方法:

1)、在项目的info.plist中添加一个Key:App Transport Security Settings,类型为字典类型。

2)、而后给它添加一个Exception Domains,类型为字典类型;

3)、把须要的支持的域添加給Exception Domains。其中域做为Key,类型为字典类型。

4)、每一个域下面须要设置3个属性:NSIncludesSubdomains、NSExceptionRequiresForwardSecrecy、NSExceptionAllowsInsecureHTTPLoads。

如图:这里写图片描述

细节提示:在iOS9之后的系统中若是使用到网络图片,也要注意网络图片是不是HTTP的哦,若是是,也要把图片的域设置哦!

关于 iOS 10 中 ATS 的问题

3.iOS 10 隐私权限设置

iOS 10 开始对隐私权限更加严格,若是你不设置就会直接崩溃,如今不少遇到崩溃问题了,通常解决办法都是在info.plist文件添加对应的Key-Value就能够了。 
(错误: This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.—访问相册失败,请求权限 
This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.–访问相机(二维码识别等)错误,要求相机权限 

这里写图片描述

以上Value值,圈出的红线部分的文字是展现给用户看的,必须添加。

4.Xcode 8 运行一堆没用的logs解决办法

Xcode8代码出现ubsystem: com.apple.UIKit, category: HIDEventFiltered, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0,,enable_oversize: 1, privacy_setting: 2, enable_private_data: 0 2016-09-14 17:18:55.843428 MyApp[6880:340837]

本身新建的一个工程啥也没干就打印一堆烂七八糟的东西,我以为这个应该是Xcode 8的问题,

具体也没细研究,解决办法是设置OS_ACTIVITY_MODE : disable 
【product】-【scheme】-【Edit Scheme】-【Run】-【Argument】-【Environment Variable】添加keyValue【OS_ACTIVITY_MODE disable】能够中止输出打印此日志

 

遗留问题:还会出现Class PLBuildVersion is implemented in both /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices (0x10a39a910) and /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x10a1c4210). One of the two will be used. Which one is undefined.

5.iOS 10 UIStatusBar方法过时:

在咱们开发中有可能用到UIStatusBar一些属性,在iOS 10 中这些方法已通过期了,若是你的项目中有用的话就得须要适配。 
这里写图片描述
UIStatusBarStyle 和 prefersStatusBarHidden这两个属性是readonly readonly readonly也就是说咱们若是在iOS 10中调用,你须要使用preferredStatusBar好比这样:

//iOS 10 

- (BOOL)prefersStatusBarHidden{ return YES; } - (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleDefault; } 

6.iOS 10 UICollectionView 性能优化

随着开发者对UICollectionView的信赖,项目中用的地方也比较多,可是仍是存在一些问题,好比有时会卡顿、加载慢等。因此iOS 10 对UICollectionView进一步的优化。 
UICollectionView cell pre-fetching预加载机制UICollectionView and UITableView prefetchDataSource 新增的API针对self-sizing cells 的改进Interactive reordering  
 在iOS 10 以前,UICollectionView上面若是有大量cell,当用户活动很快的时候,整个UICollectionView的卡顿会很明显,为何会形成这样的问题,这里涉及到了iOS 系统的重用机制,当cell准备加载进屏幕的时候,整个cell都已经加载完成,等待在屏幕外面了,也就是整整一行cell都已经加载完毕,这就是形成卡顿的主要缘由,专业术语叫作:掉帧.要想让用户感受不到卡顿,咱们的app必须帧率达到60帧/秒,也就是说每帧16毫秒要刷新一次. 
  
iOS 10 以前UICollectionViewCell的生命周期是这样的: 
1.用户滑动屏幕,屏幕外有一个cell准备加载进来,把cell从reusr队列拿出来,而后调用prepareForReuse方法,在这个方法里面,能够重置cell的状态,加载新的数据; 
2.继续滑动,就会调用cellForItemAtIndexPath方法,在这个方法里面给cell赋值模型,而后返回给系统; 
3.当cell立刻进去屏幕的时候,就会调用willDisplayCell方法,在这个方法里面咱们还能够修改cell,为进入屏幕作最后的准备工做; 
  
iOS 10 UICollectionViewCell的生命周期是这样的: 
1.用户滑动屏幕,屏幕外有一个cell准备加载进来,把cell从reusr队列拿出来,而后调用prepareForReuse方法,在这里当cell尚未进去屏幕的时候,就已经提早调用这个方法了,对比以前的区别是以前是cell的上边缘立刻进去屏幕的时候就会调用该方法,而iOS 10 提早到cell还在屏幕外面的时候就调用; 
2.在cellForItemAtIndexPath中建立cell,填充数据,刷新状态等操做,相比于以前也提早了; 
3.用户继续滑动的话,当cell立刻就须要显示的时候咱们再调用willDisplayCell方法,原则就是:什么时候须要显示,什么时候再去调用willDisplayCell方法; 
4.当cell彻底离开屏幕之后,会调用didEndDisplayingCell方法,跟以前同样,cell会进入重用队列.

在iOS 10 以前,cell只能从重用队列里面取出,再走一遍生命周期,并调用cellForItemAtIndexPath建立或者生成一个cell.在iOS 10 中,系统会cell保存一段时间,也就是说当用户把cell滑出屏幕之后,若是又滑动回来,cell不用再走一遍生命周期了,只须要调用willDisplayCell方法就能够从新出如今屏幕中了. 
iOS 10 中,系统是一个一个加载cell的,二之前是一行一行加载的,这样就能够提高不少性能;iOS 10 新增长的Pre-Fetching预加载这个是为了下降UICollectionViewCell在加载的时候所花费的时间,在 iOS 10 中,除了数据源协议和代理协议外,新增长了一个UICollectionViewDataSourcePrefetching协议,这个协议里面定义了两个方法: 

- (void)collectionView:(UICollectionView *)collectionView prefetchItemsAtIndexPaths:(NSArray*)indexPaths NS_AVAILABLE_IOS(10_0);   -(void)collectionView:(UICollectionView*)collectionView cancelPrefetchingForItemsAtIndexPaths:(NSArray*)indexPaths NS_AVAILABLE_IOS(10_0);

在ColletionView prefetchItemsAt indexPaths这个方法是异步预加载数据的,当中的indexPaths数组是有序的,就是item接收数据的顺序;

CollectionView cancelPrefetcingForItemsAt indexPaths这个方法是可选的,能够用来处理在滑动中取消或者下降提早加载数据的优先级.

注意:这个协议并不能代替以前读取数据的方法,仅仅是辅助加载数据.

Pre-Fetching预加载对UITableViewCell一样适用.

WWDC2016 Session笔记 - iOS 10 UICollectionView新特性

7.iOS 10 UIColor 新增方法

如下是官方文档的说明:

Most graphics frameworks throughout the system, including Core Graphics, Core Image, Metal, and AVFoundation, have substantially improved support for extended-range pixel formats and wide-gamut color spaces. By extending this behavior throughout the entire graphics stack, it is easier than ever to support devices with a wide color display. In addition, UIKit standardizes on working in a new extended sRGB color space, making it easy to mix sRGB colors with colors in other, wider color gamuts without a significant performance penalty. 
(译:大多数图形架构整个系统,包括核心图形核心形象,金属,和AVFoundation,有扩展范围的像素格式和宽色域的色彩空间大幅改善的支持。经过将此行为扩展到整个图形堆栈中,它比以往任什么时候候都更容易支持具备宽颜色显示的设备。此外,UIKit规范在新扩展的sRGB色彩空间工做,所以很容易与其余颜色混合的sRGB颜色,更宽的色域不显著的性能损失。) 
Here are some best practices to adopt as you start working with Wide Color. 
(译:这里是一些最佳实践,采用你开始与多种颜色的工做) 
In iOS 10, the UIColor class uses the extended sRGB color space and its initializers no longer clamp raw component values to between 0.0 and 1.0. If your app relies on UIKit to clamp component values (whether you’re creating a color or asking a color for its component values), you need to change your app’s behavior when you link against iOS 10. 
(译:在iOS 10中,该UIColor类使用扩展的sRGB色彩空间和初始化再也不夹原成分值在0和1之间。若是你的应用程序依赖UIKit夹紧元件值(不管你是建立一个颜色或要求颜色其组件的值),你须要改变你的应用程序的行为时,你的连接和iOS 10。) 
When performing custom drawing in a UIView on an iPad Pro (9.7 inch), the underlying drawing environment is configured with an extended sRGB color space. 
(译:当执行在iPad上亲一个UIView的自定义绘制(9.7英寸),基本的绘图环境配置一个扩展的sRGB色彩空间。) 
If your app renders custom image objects, use the new UIGraphicsImageRenderer class to control whether the destination bitmap is created using an extended-range or standard-range format. 
(译:若是你的应用程序提供自定义的图像对象,使用新的uigraphicsimagerenderer类控制是否目标位图是使用扩展的范围或标准格式建立。) 
If you are performing your own image processing on wide-gamut devices using a lower level API, such as Core Graphics or Metal, you should use an extended range color space and a pixel format that supports 16-bit floating-point component values. When clamping of color values is necessary, you should do so explicitly. 
(译:若是您正在使用较低级别的接口,如核心图形或金属,在宽色域设备上执行本身的图像处理,则应该使用扩展的范围颜色空间和支持16位浮点组件值的像素格式。当对颜色值进行夹紧是必要的,你应该明确地这样作。) 
Core Graphics, Core Image, and Metal Performance Shaders provide new options for easily converting colors and images between color spaces. 
(译:图形核心,核心形象,和金属的性能提供了新的选择,很容易着色的颜色和图像之间的颜色空间转换。) 
由于以前咱们都是用RGB来设置颜色,反正用起来也不是特别多样化,此次新增的方法应该就是一个弥补吧。因此在iOS 10 苹果官方建议咱们使用sRGB,由于它性能更好,色彩更丰富。若是你本身为UIColor写了一套分类的话也可尝试替换为sRGB,UIColor类中新增了两个Api以下:

+(UIColor *)colorWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0); -(UIColor *)initWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0);

 

8.iOS 10 UITextContentType

// The textContentType property is to provide the keyboard with extra information about the semantic intent of the text document.@property(nonatomic,copy) UITextContentType textContentType NS_AVAILABLE_IOS(10_0); // default is nil

在iOS 10 UITextField添加了textContentType枚举,指示文本输入区域所指望的语义意义。

使用此属性能够给键盘和系统信息,关于用户输入的内容的预期的语义意义。例如,您能够指定一个文本字段,用户填写收到一封电子邮件确认uitextcontenttypeemailaddress。当您提供有关您指望用户在文本输入区域中输入的内容的信息时,系统能够在某些状况下自动选择适当的键盘,并提升键盘修正和主动与其余文本输入机会的整合。

9.iOS 10 字体随着手机系统字体而改变

当咱们手机系统字体改变了以后,那咱们App的label也会跟着一块儿变化,这须要咱们写不少代码来进一步处理才能实现,可是iOS 10 提供了这样的属性adjustsFontForContentSizeCategory来设置。由于没有真机,具体实际操做还没去实现,若是理解错误帮忙指正。

UILabel *myLabel = [UILabel new]; /* UIFont 的preferredFontForTextStyle: 意思是指定一个样式,并让字体大小符合用户设定的字体大小。 */ myLabel.font =[UIFont preferredFontForTextStyle: UIFontTextStyleHeadline]; /* 指示是否应自动更新相应元素的字体时,装置的uicontentsizecategory。 这个属性生效,元素的字体必须使用+ preferredfontfortextstyle: 或+ preferredfontfortextstyle:compatiblewithtraitcollection:一个有效的uifonttextstyle。 */ //是否更新字体的变化 myLabel.adjustsFontForContentSizeCategory = YES;

 

10.iOS 10 UIScrollView新增refreshControl

这里写图片描述
iOS 10 之后只要是继承UIScrollView那么就支持刷新功能:

@property (nonatomic, strong, nullable) UIRefreshControl *refreshControl NS_AVAILABLE_IOS(10_0) __TVOS_PROHIBITED; - (instancetype)init; @property (nonatomic, readonly, getter=isRefreshing) BOOL refreshing; @property (null_resettable, nonatomic, strong) UIColor *tintColor; @property (nullable, nonatomic, strong) NSAttributedString *attributedTitle UI_APPEARANCE_SELECTOR; // May be used to indicate to the refreshControl that an external event has initiated the refresh action - (void)beginRefreshing NS_AVAILABLE_IOS(6_0); // Must be explicitly called when the refreshing has completed - (void)endRefreshing NS_AVAILABLE_IOS(6_0); 

11.iOS 10 判断系统版本正确姿式

判断系统版本是咱们常常用到的,尤为是如今你们都有可能须要适配iOS 10,那么问题就出现了,以下图: 
这里写图片描述

咱们获得了答案是:

//值为 1 [[[[UIDevice currentDevice] systemVersion] substringToIndex:1] integerValue] //值为10.000000 [[UIDevice currentDevice] systemVersion].floatValue, //值为10.0 [[UIDevice currentDevice] systemVersion]

因此说判断系统方法最好仍是用后面的两种方法,哦~我忘记说了[[UIDevice currentDevice] systemVersion].floatValue这个方法也是不靠谱的,好像在8.3版本输出的值是8.2,记不清楚了反正是不靠谱的,因此建议你们用[[UIDevice currentDevice] systemVersion]这个方法!

Swift判断以下:

if #available(iOS 10.0, *) { // iOS 10.0 print("iOS 10.0"); } else { } 

12.推送的时候,开启Remote notificationsYou’ve implemented -[application:didReceiveRemoteNotification:fetchCompletionHandler:],

but you still need to add “remote-notification” to the list of your supported UIBackgroundModes in your Info.plist.

解决方案:须要在Xcode 中修改应用的 Capabilities 开启Remote notifications,请参考下图: 
这里写图片描述

13.One of the two will be used. Which one is undefined.”

objc[5114]:Class PLBuildVersion is implemented in both /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices (0x1109a5910) and /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x110738210). One of the two will be used. Which one is undefined.

在模拟器中、发现“One of the two will be used. Which one is undefined.”日志

查找资料发现缘由:objc runtime 对所用app使用同一个命名空间(flat namespace),运行机制以下:

首先二进制映像被加载,检查程序依赖关系

每个二进制映像被加载的同时,程序的objc classes在objc runtime命名空间中注册

若是具备相同名称的类被再次加载,objc runtime的行为是不可预知的。一种可能的状况是任意一个程序的该类会被加载(这应该也是默认动做)

14.Xcode 8 Command + / 不能注释

解决方法:在终端输入 
//sudo /usr/libexec/xpccachectl 
重启电脑便可. 
另外:Xcode 推出来快速文本注释:Command +Option +/

/** <#Description#>  @param frame <#frame description#>  @return <#return value description#> */ - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { [self initUiConfig]; } return self; }

 

15证书问题

这里写图片描述

这个问题刚开始估计你们都会碰到也是第一个要解决的问题 
这个问题就是一个证书的设置问题,下面看两张图 
正常咱们会在BuildeSettings中设置证书:

这里写图片描述

可是在xcode8.0中咱们看到下面的新特性:

这里写图片描述
相信你们都能看到在Genreal下面会有Siging,没错这就是新特性,为了方便用户来管理,你们能够选择Automatically manage signing。须要输入开发者帐号!若是没有帐号也不要紧,在下面也能够选择Debug、Realease、inHouse模式下对应的证书也能够!

可是 可是 可是 若是你的证书若是是通配符类型的,可是你的app包含了好比推送、apple pay、他会报错提示你未报含xx.id的manteid等等。因此你要生成针对你app的bundleid对应的证书!

16跳转到app内的隐私数据设置页面

咱们知道用户没开启,确定要提醒用户去设置开启的吧,因此咱们要跳转到app的隐私数据界面。如何调用呢 
iOS10 以前调用方法:

NSURL*url=[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]; [[UIApplication sharedApplication] openURL:url];

 

 

可是iOS10 以后不能再调用此方法进行跳转隐私设置界面. 

iOS10以后: 
1)定义一个宏方便调用

//-----------------------系统权限设置路径(iOS8之后适用)--------------------- //url #define SettingURL [NSURL URLWithString:UIApplicationOpenSettingsURLString] //调到设置 #define GoToSetting if([[UIApplication sharedApplication] canOpenURL:SettingURL]) { \ [[UIApplication sharedApplication] openURL:SettingURL];}}

 

 

调用

//去设置 if (IOS8_OR_LATER) { GoToSetting; }

 

2,方法中直接调用 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

17真彩色的显示

真彩色的显示会根据光感应器来自动的调节达到特定环境下显示与性能的平衡效果,若是须要这个功能的话,能够在info.plist里配置(在Source Code模式下):

UIWhitePointAdaptivityStyle

 

它有五种取值,分别是:

UIWhitePointAdaptivityStyleStandard // 标准模式 UIWhitePointAdaptivityStyleReading // 阅读模式 UIWhitePointAdaptivityStylePhoto // 图片模式 UIWhitePointAdaptivityStyleVideo // 视频模式 UIWhitePointAdaptivityStyleStandard // 游戏模式

 

若是你的项目是游戏类的,就选择UIWhitePointAdaptivityStyleStandard这个模式,五种模式的显示效果是从上往下递减,也就是说若是你的项目是图片处理类的,你选择的是阅读模式,给选择太好的效果会影响性能.

 

18.Xib文件的注意事项

使用Xcode8打开xib文件后,会出现下图的提示。

QQ20160913-9.png-41.7kB


你们选择Choose Device便可。
以后你们会发现布局啊,frame乱了,只须要更新一下frame便可。以下图

QQ20160913-11.png-113.2kB

  • 注意:若是按上面的步骤操做后,在用Xcode7打开Xib会报一下错误,

QQ20160913-12.png-32.3kB

    • 解决办法:须要删除Xib里面 
      <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
      这句话,以及把< document >中的toolsVersion和< plugIn >中的version改为你正常的xib文件中的值
      ,不过不建议这么作,在Xcode8出来后,但愿你们都快速上手,全员更新。这就跟Xcode5到Xcode6同样,有变更,可是仍是要尽早学习,尽快适应哟!

 

19.MJRefresh出现崩溃现象

 解决办法:类库增长判断

1
2
3
if  (range.location !=  NSNotFound ) {
             language = [language substringToIndex:range.location];
}    

 

 

20.iOS 10 ImagePickerController.cameraViewTransform问题

(本条更新于:2016-09-21) 不少人反映自定义相机出现了问题,cameraViewTransform不能用了,其实网上关于这个的资料不是不少,在这里提供参考办法以下:

经过监听AVCaptureSessionDidStartRunningNotification来解决

//#import <AVFoundation/AVFoundation.h>
  //监听
   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(cameraNotification:) name:AVCaptureSessionDidStartRunningNotification object:nil];
  //监听方法
  - (void)cameraNotification:(NSNotification *)notification {
    dispatch_async(dispatch_get_main_queue(), ^{
          // 这里实现
          imagePickerController.cameraViewTransform = CGAffineTransformMakeTranslation(50,  50);
      });
  }
  • 使用AVFoundation框架

看来UIImagePickerController视乎不在适用于iOS 10了。因此说能够选择AVFoundation来解决这个问题。 下面是参考学习: UIImagePickerController’s cameraViewTransform

 

21.Xcode8 警告报错 “xx”is missing from working copy 问题解决

问题描述:

iOS开发时,将Xcode升级到8后,工程运行后出现了不少的报错警告,以下图所示,几乎每一个文件都有“xx”is missing from working copy的警告。某某文件 is missing from working copy字面意思来看是相似使用SVN时出现的删除某个文件后,此文件仍出如今SVN缓存的问题。可是奇怪的是这个工程我暂时尚未使用SVN,因此我的推断缘由多是文件路径缓存的问题。(有哪位同仁知道具体缘由请麻烦告知)


Paste_Image.png

问题具体缘由:
同问题描述中所述。

问题解决:
1.打开Mac终端;
2.cd 到出问题的工程文件夹下 (to 新手朋友,就是在终端中输入 cd 而后 输入空格,再把出问题的那个文件拖拽到终端的窗口内,而后点击回车。这其实就是一种获取文件路径的快速方法)
3.输入 find . -type d -name .svn | xargs rm -rf (此命令的意思为删除置顶文件下的全部SVN相关)
4.从新打开Xcode运行,成功,不在报错“xx”is missing from working copy。
注意⚠️:此处应用的方法为解决svn缓存的方法,若是是由于SVN缓存问题出现的个别某个文件“xx”is missing from working copy报错,请在第3步中输入 svn rm --force 丢失文件的名称,而不是删除全部svn相关。

问题相关其余问法(为方便各类搜索问题习惯的朋友快速找到此解决方法):
Xcode8升级后报错is missing from working copy;
iOS 报错is missing from working copy;
升级Xcode8后不少警告报错;
iOS不少警告报错is missing from working copy;
某某文件 is missing from working copy;

参考资料及鸣谢:
http://blog.csdn.net/sinat_29789455/article/details/52640913
http://blog.csdn.net/hdfqq188816190/article/details/52594761
等等。