标签: xcode8

在Xcode 8和iOS 10中使用NSUserDefaults

NSUserDefaults 不再是iOS 10 SDK中的类:

let defaults = NSUserDefaults.standardUserDefaults()
Run Code Online (Sandbox Code Playgroud)

这无法编译.这个班级被删除了吗?

(这是一个规范的问答对,以防止重复的问题泛滥)

ios swift swift3 ios10 xcode8

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

将Xcode 8支持插件( - >恶魔岛)

Apple在Xcode 8中引入了Xcode源代码编辑器扩展.Xcode 8是否仍然支持通过Alcatraz提供的插件?

xcode8

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

Xcode 8 beta 4:构建失败,"以下二进制文件使用不兼容的Swift版本:"错误

使用new,Xcode 8 beta 4我们在CopySwiftLibs构建阶段开始遇到以下错误:

Effective srcDirs: {(

    <DVTFilePath:0x7f865961e970:'/Volumes/Data/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator'>,

    <DVTFilePath:0x7f8657d02b20:'/Volumes/Data/Xcode-beta.app/Contents/Developer/Toolchains/Swift_2.3.xctoolchain/usr/lib/swift/iphonesimulator'>

)}
Run Code Online (Sandbox Code Playgroud)

错误:以下二进制文件使用不兼容的Swift版本:

/Users/user/Projects/git/iphone-swift-1/DerivedData/myApp/Build/Products/Debug-iphonesimulator/myApp.app/myApp

/Users/user/Projects/git/iphone-swift-1/myApp/myAppApi.framework/myAppApi

myAppApi是工作空间中的子项目,包含一些共享代码(它使用Alamofire).

有一点需要注意:最初我们将项目从Swift 2.2转换为Swift 2.3,然后手动升级到3.0.

有谁知道可能导致此错误的原因是什么?

谢谢!

iphone xcode ios swift3 xcode8

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

导航栏宽度的Xcode 8 Storyboard警告

我在Xcode 8的每个故事板中为每个导航控制器获取导航栏的约束警告.

警告的屏幕截图

为了消除警告,我将导航控制器的模拟指标 - >顶部栏设置从推断设置为无,然后再返回,警告消失.直到下一次故事板打开,然后警告才会回来.

我的故事板有iPhone SE显示设置,导航栏不是半透明的.

xcode storyboard ios xcode8

30
推荐指数
2
解决办法
6475
查看次数

推送通知未在iOS 10上收到,但在iOS 9及更早版本上运行

我有几个用Swift 2.2编写的应用程序,使用Xcode 7.3编译并在App Store上运行.这些应用程序使用Push Notifications,在iOS 9.3及更早版本中运行良好.

但是,在已升级到iOS 10的设备上,我的应用程序不会收到任何推送通知.仍在运行iOS 9的设备仍在接收通知.

考虑到它可能是证书或授权问题,我尝试了以下内容:将我的一个应用程序升级到Swift 2.3,添加了APS环境权利并在Xcode 8中编译它,但这没有任何区别.

在我的AppDelegate中,我仍然有现有的方法来注册推送通知,其中包括:

let notificationSettings = UIUserNotificationSettings(forTypes: [.Badge, .Sound, .Alert], categories:nil)
application.registerUserNotificationSettings(notificationSettings)
Run Code Online (Sandbox Code Playgroud)

这个注册似乎在iOS 10上也很成功,因为然后调用了应用程序didRegisterForRemoteNotificationsWithDeviceToken,所以我从APNS收到一个令牌.

问题是,当我向此设备发送推送通知时,永远不会调用应用程序didReceiveRemoteNotification.

现在,这里据说在UIApplicationDelegate方法已被弃用iOS上10,我应该实现userNotificationCenter(:didReceive:withCompletionHandler :)和userNotificationCenter(:willPresent:withCompletionHandler :)

问题是我不仅仅针对iOS 10.我仍然需要应用程序才能在iOS 8和9上运行,所以我怀疑这是实现这些方法的正确方法.

如何获取现有应用的推送通知以继续处理已升级到iOS 10的设备?我需要重写代码吗?我是否只需要更新一些证书或权利,并使用一些"新"设置在Xcode 8中重新编译?

push-notification apple-push-notifications ios swift xcode8

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

在xcode8中找不到ModuleName-Swift.h文件

我正在努力研究一个混合的Swift和ObjectiveC项目而没有运气.

我的项目由6个目标组成:

  • 应用
  • 核心
  • CoreTest
  • 摘要
  • WatchKit扩展
  • WatchKit应用程序

我已经能够添加一个具有一个目标成员资格(App)的Swift类,并使用从App-Bridging-Header.h传递的ObjectiveC代码 ."ObjectiveC into Swift code"范例就像一个魅力.

相反,我正在努力解决"Swift into ObjectiveC code"范式.在特定情况下,我需要在ObjectiveC .m文件中使用一个新的Swift类,该文件是四个目标的成员.

到目前为止我一直在做的是:

  1. 将新的Swift文件添加到Core项目,指定四个成员资格(App,Core,Summary,WatchKit Ext)
  2. XCode要求为三个项目创建-Bridging-Header.h Core,Summary和WatchKit Ext(App-Bridging-Header.h已经存在,因为之前已经使用过),我同意(不知道为什么它会在里面创建这些文件)我添加我的Swift类的同一组文件夹但是没关系)
  3. 我创建了Swift类,在前添加了@objc
  4. 我去检查是否为所有模块设置了Objective-C Generated Interface Header Name,是的
  5. 我去检查所有模块中的Defines Module是否设置为No,并在主项目中设置为Yes,是的
  6. 我写下了所有四个目标的-Swift.h文件的导入
  7. 在我的Objective-C类中,我尝试使用我的新Swift类,显然它似乎工作(甚至自动完成)
  8. 我尝试构建项目,但它没有说没有找到-Swift.h文件

我已经按照Apple混合和匹配指南和许多SO线程,包括这个似乎显然是为了解决我的同样问题,但它不起作用.

也见过这个这个但是没有用.

还尝试过删除派生数据以及多次清理整个项目而没有运气.

编辑1:更多细节

这是我的Swift类导入RealmSwift的声明

@objc class MyClass: Object {}
Run Code Online (Sandbox Code Playgroud)

这是在ObjectiveC中使用Swift类的片段

MyClass *app = [[MyClass alloc] …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c ios swift xcode8

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

在调试超类或协议扩展/实现时,调试嵌入式框架不能按预期工作

我写了一个纯粹的Swift框架,我将其嵌入到我的项目中.

当我调试我直接从我的应用程序使用的代码时,调试工作正常.

例如,如果我Dog用一个方法在框架内编写一个类,我从我的应用程序调用它,一切都很好.

但是,如果我编写一个基类Animal,然后Dog在我的app模块中继承Animal并且断点到达实现的类Animal,它显示如下:

断点

如果Animal是协议并且我在其中编写扩展或默认实现并且我从一个实例调用该方法,则会发生相同的情况Dog.

我已经检查过我确实在调试模式下运行框架,没有优化,没有剥离符号,也使用DWARFdSYM.

iphone xcode ios swift xcode8

30
推荐指数
1
解决办法
677
查看次数

什么是libswiftRemoteMirror.dylib,为什么它包含在我的应用程序包中?

我有一个iOS应用程序,我最近切换到Xcode 8.作为其中的一部分,我们从swift 2.2切换到2.3(swift 3将在稍后出现).

我有一个自动构建管道,基本上运行xcodebuild在专用构建机器上生成发布二进制文件,然后我对所有这些进行排序(Xcode 8的自动代码签名确实搞砸了所有内容),现在我将我的应用程序上传到iTunes连接,它失败并出现此错误:

ERROR ITMS-90171:"无效的束状结构-二进制文件'MyApp.app/libswiftRemoteMirror.dylib’不允许您的应用程序不能包含独立的可执行文件或库,比支持束的CFBundleExecutable其他参考包编程.有关iOS应用包结构的信息,访问https://developer.apple.com/go/?id=bundle-structure."

果然,如果我解压缩.ipa文件并查看,那就libswiftRemoteMirror.dylib坐在那里.

如果我通过Xcode存档/导出iTunes,那么它会生成一个没有的应用程序包libswiftRemoteMirror.dylib,但是我的应用程序的所有其他版本似乎都有它.即使只是在Xcode中进行调试构建,然后查看输出显示libswiftRemoteMirror.dylib位于我的应用程序包中,表明Xcode本身肯定是在那里,而不是我的自动构建脚本的任何部分.

这个文件是什么,为什么要放在那里,我该怎么办呢?我可以修改我的构建脚本以删除此文件以用于发布版本,但我担心这可能会影响代码签名过程.无论如何我会试一试,看看会发生什么,但感觉这不是正确的事情.

任何意见,将不胜感激.

xcode itunesconnect ios swift xcode8

29
推荐指数
2
解决办法
6706
查看次数

无法联系本地DTServiceHub以保证模拟器连接

当我在模拟器中运行我的基本Xcode项目时,我遇到了以下问题: -

无法启动与模拟器的服务连接.

无法联系本地DTServiceHub以保证模拟器连接

Xcode 8.0

OS 10.11.6

SWIFT 3

在此输入图像描述

ios xcode8

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

在swift 3中将字符串转换为DATE类型

我有这个结构:

struct message {

  var id: String = "0"
  var text: String = ""
  var date: Date!
  var status: String = "" 
}
Run Code Online (Sandbox Code Playgroud)

我必须从dbase加载这个结构,它String也以格式导出date.所以我写这段代码转换StringDate类型:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC") as TimeZone!
let dataDate = dateFormatter.date(from: elemMessage["date"] as! String)!
Run Code Online (Sandbox Code Playgroud)

我将它加载到结构中:

message(id: elemMessage["id"] as! String, text: elemMessage["text"] as! String, date: dataDate as! Date, status: elemMessage["status"] as! String)
Run Code Online (Sandbox Code Playgroud)

但是我有这个警告:"从不Date相关的类型转换Date总是失败"

因此,如果我运行应用程序,它将失败.

我怎样才能解决这个问题,date结构中的var必须是 …

date ios swift3 xcode8

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