Questions tagged «swift3»

仅对于与Apple的Swift编程语言的版本3的更改直接相关的问题使用此标记。使用标签[swift]来解决更常见的语言问题,或使用标签[ios],[cocoa],[apple-watch]等来解决有关在Apple平台上开发的问题。

3
往返于数据的Swift数字类型
使用Swift 3 Data而不是[UInt8],我试图找出最有效/惯用的编码/解码方式,将各种数字类型(UInt8,Double,Float,Int64等)转换为Data对象。 有这个答案使用[UINT8] ,但它似乎是使用各种指针的API,我不能对数据找到。 我基本上想要一些自定义扩展,如下所示: let input = 42.13 // implicit Double let bytes = input.data let roundtrip = bytes.to(Double) // --> 42.13 我仔细阅读了许多文档,真正使我难以理解的部分是如何从任何基本结构(所有数字都是)中获得某种指针(OpaquePointer或BufferPointer或UnsafePointer?)。在C语言中,我只需在它前面拍一个&符,然后就可以了。

11
Swift 3-设备令牌现在被解析为“ 32BYTES”
我刚刚从Xcode 7更新到8 GM,并且在Swift 3兼容性问题中,我注意到我的设备令牌已停止工作。他们现在只读取'32BYTES'。 func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { print(deviceToken) // Prints '32BYTES' print(String(data: deviceToken , encoding: .utf8)) // Prints nil } 在更新之前,我可以简单地将NSData发送到服务器,但是现在我很难解析令牌。 我在这里想念什么? 编辑:我只是测试转换回NSData,我看到了预期的结果。所以现在我只是对新的数据类型感到困惑。 func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { print(deviceToken) // Prints '32BYTES' print(String(data: deviceToken , encoding: .utf8)) // Prints nil let d …
94 ios  swift  swift3 

13
在Swift 3中从数组中删除对象
在我的应用程序在阵列中加入一个对象时选择单元和非选择和删除对象时重新选择小区。我使用了该代码,但给了我错误。 extension Array { func indexOfObject(object : AnyObject) -> NSInteger { return (self as NSArray).indexOfObject(object) } mutating func removeObject(object : AnyObject) { for var index = self.indexOfObject(object); index != NSNotFound; index = self.indexOfObject(object) { self.removeAtIndex(index) } } } class MyViewController: UITableViewController { var arrContacts: [Any] = [] var contacts: [Any] …
92 ios  arrays  swift  swift3 

4
在Swift 3中具有属性的Singleton
在苹果公司的《将Swift与Cocoa和Objective-C结合使用》(针对Swift 3更新)中,他们给出了Singleton模式的以下示例: class Singleton { static let sharedInstance: Singleton = { let instance = Singleton() // setup code return instance }() } 让我们想象一下,这个单例需要管理一个可变的String数组。我将如何/在何处声明该属性,并确保将其正确初始化为空[String]数组?
88 singleton  swift3 

10
快速生成自己的错误代码3
我想要实现的是URLSession在swift 3中执行一个请求。我正在一个单独的函数中执行此操作(以免为GET和POST分别编写代码),并返回URLSessionDataTask和处理闭包的成功和失败。有点像这样- let task = URLSession.shared.dataTask(with: request) { (data, uRLResponse, responseError) in DispatchQueue.main.async { var httpResponse = uRLResponse as! HTTPURLResponse if responseError != nil && httpResponse.statusCode == 200{ successHandler(data!) }else{ if(responseError == nil){ //Trying to achieve something like below 2 lines //Following line throws an error soo its not possible …

8
如何解决“字符串插值为可选值生成调试描述;你是说要明确吗?” 在Xcode 8.3 beta中?
从beta 8.3开始,成千上万的警告“字符串插值会为可选值生成调试说明;您是要明确显示此值?” 出现在我的代码中。 例如,在以下情况下会弹出警告,其中选项可能会导致无效: let msg = "*** Error \(options["taskDescription"]): cannot load \(sUrl) \(error)" 按照之前的设计,对于我(和编译器)来说,可以将可选值插值为“ nil”是可以的。但是编译器改变了主意。 编译器建议的是添加一个具有以下描述的String构造函数: let msg = "*** Error \(String(describing: options["taskDescription"])): cannot load \(sUrl) \(error)" 显然,结果在我看来是明确的,但也非常麻烦。有更好的选择吗?我是否必须解决所有这些警告,或者更好地等待下一个Beta?

9
检查是否启用了定位服务
我一直在做一些有关CoreLocation的研究。最近,我遇到了一个问题,该问题已在其他地方(Objective C和iOS 8)解决。 我觉得这有点愚蠢,但是如何在iOS 9上检查是否使用swift启用了定位服务? 在iOS 7(可能是8?)上,您可以使用locationServicesEnabled(),但是在为iOS 9编译时似乎无法正常工作。 那我该怎么做呢? 谢谢!
87 ios  swift  location  ios9  swift3 


10
Bundle.main.path(forResource:ofType:inDirectory :)返回nil
尽量不要笑或大哭-离开20年后,我才重新开始编写代码... 我花了4多个小时来查看引用并尝试使用代码片段来获取Bundle.main.path来打开我的文本文件这样我就可以为我的应用读取数据(下一步是适当地解析它)。 if let filepath = Bundle.main.path(forResource: "newTest", ofType: "txt") { do { let contents = try String(contentsOfFile: filepath) print(contents) } catch { print("Contents could not be loaded.") } } else { print("newTest.txt not found.") } 结果是:“找不到newTest.txt。” 无论我如何尝试将文件拖放到项目中,都可以在Xcode中创建文件,也可以使用File-> Add Files to ...菜单项。
82 ios  swift  macos  file  swift3 


8
未调用didReceiveRemoteNotification,iOS 10
在iOS 9.3中,didReceiveRemoteNotification以下两种情况都会调用此方法。 1)收到推送通知时2)用户通过点击通知启动应用程序时。 但在iOS上10,我注意到,该didReceiveRemoteNotification方法不不,当用户通过点击通知启动应用程序触发。仅在收到通知时调用。因此,从通知启动应用程序后,我无法采取任何进一步的措施。 该如何解决?任何想法?

2
将闭包更新为Swift 3-@escaping
我已经将代码更新为Xcode 8.0 beta 6,但是我对新的不可转义的闭包默认值感到困惑。在下面的代码的Xcode提示添加@escaping在前面的completion:在下面的第一行代码,但仍然无法编译,去的圈子。* (编辑:实际上,正如Xcode所建议的那样,@escaping应该添加在after之后 completion:。警报可能仍会显示,但清理和编译会将其删除。)*应该如何重新编写/修复此代码才能在更新的Swift 3中工作?我看过新手册,但找不到合适的代码示例。 func doSomething(withParameter parameter: Int, completion: () -> ()) { // Does something callSomeOtherFunc(withCompletion: completion) } // Calling the method and execute closure doSomething(withParameter: 2) { // do things in closure } 任何帮助,不胜感激!

6
将rootViewController与动画交换?
我试图用标签栏交换到另一个根视图控制器;通过应用程序委托,我想添加过渡动画。默认情况下,它将仅显示视图而没有任何动画。 let tabBar = self.instantiateViewController(storyBoard: "Main", viewControllerID: "MainTabbar") let appDelegate = UIApplication.shared.delegate as! AppDelegate appDelegate.window = UIWindow(frame: UIScreen.main.bounds) appDelegate.window?.rootViewController = tabBar appDelegate.window?.makeKeyAndVisible() 这就是我换成另一个rootview控制器的方式。

6
在Swift 3错误中访问代码
Xcode 8 beta 4中的新增NSError功能桥接到SwiftError协议类型。处理失败SKPaymentTransaction的时,这会影响StoreKit 。您应该检查以确保没有发生错误,因为交易被取消了才知道是否向用户显示错误消息。您可以通过检查错误的完成此操作code。但是使用Error代替NSError,没有code定义。我还无法弄清楚如何从中正确获取错误代码Error。 这在Swift 3的先前版本中有效: func failedTransaction(_ transaction: SKPaymentTransaction) { if let transactionError = transaction.error { if transactionError.code != SKErrorCode.paymentCancelled.rawValue { //show error to user } } ... } 现在error是一个Errornot NSError,code不是成员。
73 swift  swift3 

1
Swift 3不正确的字符串插值,带有隐式展开的Optionals
为什么隐式解开了可选在Swift 3中使用字符串插值时,没有解开变量? 示例:在操场上运行以下代码 var str: String! str = "Hello" print("The following should not be printed as an optional: \(str)") 产生以下输出: The following should not be printed as an optional: Optional("Hello") 当然,我可以将字符串与 +运算符将字符串但是我在应用程序中的几乎所有地方都使用了字符串插值,由于这个原因,现在不再起作用了(错误?)。 这甚至是一个错误,还是他们有意使用Swift 3更改了此行为?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.