我想要实现的是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
//var errorTemp = Error(domain:"", code:httpResponse.statusCode, userInfo:nil)
//failureHandler(errorTemp)
}else{
failureHandler(responseError!)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不希望处理此函数中的错误条件,并希望使用响应代码生成错误,并返回此错误以在任何调用此函数的位置处理它.任何人都可以告诉我该怎么做?或者这不是处理这种情况的"快速"方式吗?
如何确定Swift 3中NSDate类的小时,分钟和秒?
在Swift 2中:
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.Hour, fromDate: date)
let hour = components.hour
Run Code Online (Sandbox Code Playgroud)
斯威夫特3?
Xcode 8 beta 4中的新功能NSError与Swift Error协议类型相连.这会在处理失败的SKPaymentTransactions 时影响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
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
现在error是Error不是NSError,code是不是成员.
我希望我的应用程序能够在单击按钮时调用某个数字.我试图谷歌它但是到目前为止似乎没有iOS 10(openURL已经消失).有人能为我举个例子吗?例如:
@IBAction func callPoliceButton(_ sender: UIButton) {
// Call the local Police department
}
Run Code Online (Sandbox Code Playgroud) 当我编译应用程序时,我得到一个等于这个错误:
无法构建Objective-C模块'Firebase'
import Firebase我的文件swift中出现此错误.
在iOS 9.3中,该didReceiveRemoteNotification方法在以下两种情况下都会被调用.
1)当收到推送通知时2)当用户通过点击通知启动应用程序时.
但在iOS上10,我注意到,该didReceiveRemoteNotification方法不不,当用户通过点击通知启动应用程序触发.只有在收到通知时才会调用它.因此,在通知启动应用程序后,我无法执行任何进一步操作.
应该解决这个问题?任何的想法?
尽量不要笑或哭 - 我只是在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.")
}
Run Code Online (Sandbox Code Playgroud)
结果是:"找不到newTest.txt." 无论我如何尝试将文件拖放到项目中,在Xcode中创建文件或使用文件 - >添加文件到...菜单项.
在我的应用程序中,我在选择单元格时在数组中添加了一个对象,并在重新选择单元格时取消选择并删除对象.我使用了那段代码但是给了我错误.
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] = []
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
arrContacts.removeObject(contacts[indexPath.row])
}
}
Run Code Online (Sandbox Code Playgroud)
它给了我2个错误:
C-style for statement has been removed in Swift 3
Value of type '[Any]' has no member …Run Code Online (Sandbox Code Playgroud) 我想要在Swift中使用数据值的十六进制表示.
最终我想要像这样使用它:
let data = Data(base64Encoded: "aGVsbG8gd29ybGQ=")!
print(data.hexString)
Run Code Online (Sandbox Code Playgroud) 我已经安装了Xcode 8.0并将Swift 2.2转换为3.0(这个过程也花费了很多时间,我只是让我的Mac一整晚都在运行).我没有一个大项目(大约20个文件).我也在用Pods.索引以前的Xcode版本(<8.0)工作得很快但现在,升级后,进度条卡在一个位置(我已经等了一个小时).
我试过的事情对我没有帮助:
DerivedData文件夹并重新启动XcodePods目录,<project>.xcworkspace然后重新安装当开发人员花费数小时来解决这些荒谬的问题时,制作这样的软件版本真的不是很酷.这非常令人失望.任何想法如何解决这一问题?
swift3 ×10
ios ×6
swift ×5
ios10 ×2
xcode8 ×2
arrays ×1
file ×1
firebase ×1
indexing ×1
macos ×1
nsdate ×1
nsurlsession ×1
objective-c ×1
phone-call ×1
xcode ×1