Tag: error handling

如何迅速在closures中抛出错误?

请看下面的代码: override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { let deleteAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Delete", handler: { (action : UITableViewRowAction, indexPath : NSIndexPath) -> Void in if let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext{ let restaurantToDelete = self.fetchResultController.objectAtIndexPath(indexPath) as! Restaurant managedObjectContext.deleteObject(restaurantToDelete) // Saving managedObjectContext instance, and catch errors if it fails do { […]

variables是写的,但从来没有读过?

我得到下面的警告variable 'isTaken' was written to, but never read下面的代码: func textFieldShouldEndEditing(textField: UITextField) -> Bool { var isTaken: Bool = false if textField == usernameTxt { var query = PFQuery(className: "_User") query = PFQuery(className: "_User") query.whereKey("username", equalTo: usernameTxt.text!) query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) in if error == nil { if (objects!.count > 0){ isTaken = true […]

我如何得到Swift 2.0中的错误信息?

我在Swift 1.2中使用了这个方法: NSURLConnection.sendSynchronousRequest(:_:_:_)但是在iOS9中显然不推荐使用。 它仍然有效,但现在它使用新的Swift 2.0error handling,我不知道如何得到错误信息,如果失败,例如。 如果时间用完。 我知道我必须把它变成一个do-catch,然后在方法之前说出来,但我不知道如何捕获错误信息。 do { let data = try NSURLConnection.sendSynchronousRequest(request, returningResponse: nil) return data } catch _ { return nil } 之前我用NSError,然后是它的描述属性,但现在我不知道。

错误“调用可以抛出,但没有标记'尝试',错误不处理”

使用这段代码获得错误“调用可以抛出,但没有用'try'标记,错误不会被处理” 我正在使用Xcode 7.1最新的beta和swift 2.0 func checkUserCredentials() -> Bool { PFUser.logInWithUsername(userName!, password: password!) if (PFUser.currentUser() != nil) { return true } return false

SIGSEGV SEGV_ACCERR崩溃报告 – 该怎么办?

我刚刚在AppStore上发布了一个Crittercism崩溃报告的应用程序,并且我收到了一些关于SIGSEGV错误的崩溃报告。 Crittercism给了我一个StackTrace和一些关于使用统计信息的方便的细节,等等。但是,我还是被这些符号化的堆栈跟踪弄糊涂了。 我对这种事情总体上有几个问题 – 堆栈跟踪中的许多类和方法甚至在我的应用程序中都没有使用(据我所知),这导致我相信这些崩溃是由苹果公司的私有API引起的。 看看这个问题底部附近的Stack Trace。 如果崩溃报告中的所有方法和类都不是直接在我的代码中实现,我怎么能告诉崩溃我的应用程序? 在坠毁的线程中每行结尾处的数字+号代表什么? 大多数Q / A的StackOverflow询问有关SIGSEGV崩溃说,他们是由内存泄漏或问题引起的, 但是 ,如果我在我的iOS项目中使用ARC,我怎么能因为内存问题崩溃? ARC是不是应该为我pipe理所有这些东西? 如果我不能复制错误/崩溃,我该怎么办? 有什么方法可以真正阅读 StackTrace吗? 有什么总的来说会有助于理解发生的事情吗? 这里是来自Crittercism主线程崩溃报告的StackTrace,这个问题涉及到: Thread: Unknown Name (Crashed) 0 UIKit 0x37307a22 -[UIView(CALayerDelegate) actionForLayer:forKey:] + 138 1 QuartzCore 0x38fdfff7 -[CALayer actionForKey:] + 75 2 QuartzCore 0x38fdffa7 _ZL12actionForKeyP7CALayerPN2CA11TransactionEP8NSString + 59 3 QuartzCore 0x38fdfe93 _ZN2CA5Layer12begin_changeEPNS_11TransactionEjRP11objc_object + 131 4 QuartzCore 0x38fdab87 _ZN2CA5Layer6setterEj12_CAValueTypePKv + […]

iOS:在哪里可以findiOS的OSStatus代码的完整列表?

我可以在OS X库源代码中轻松findnoErr = 0 。 但是在iOS上很难findOSStatus的错误代码的完整列表。 在Mac OS X上,find类似的东西并不难 kAudioHardwareUnsupportedOperationError 但我似乎无法findiOS OSStatus代码的有用信息。 有一个完整的列表或任何指向定义它们的头文件的指针会很好。 谢谢! 更新: 我不认为我的问题是上述问题的重复。 这个“可能重复”问题的操作者想把他已经知道的4个字符代码转换成可读的string。 相反,这是我的进一步规范: 我甚至不知道用于iOS的4字符或typedefed整数。 我希望看到类似代码的完整列表,就像您通常会在许多C ++框架/库devise中看到的一样,例如枚举列表或标准exception,甚至是OSX k-something代码,至less可以只能在Xcode文档中find。 我的这些代码的用例包括: 在我的自定义函数中,例如,一些CoreAudiocallback函数必须返回OSStatus,我想返回这些内置的人类可读代码来指示运行时错误的types。 如果没有这个清单,除了noErr,我不知道该回复什么。 显然,在iOS环境下,许多OSX k代码是未定义的,所以它们不能透明地使用。 更新(结论): 我终于find了一条线索:在Xcode文档(Organizer)中search关键字“结果代码”,我们在“系统指南”结果中得到或多或less分类的返回代码文档部分。 这对我原来的问题已经足够了。 –

应用名称已被使用?

所以对我来说这很奇怪 我有2个个人iTC帐户(不要问为什么),无论如何,我的旧帐户有这个名称作为一个应用程序,然后过期与hibernate帐户仍然采用的名称。 现在在我的新帐户上,我正在尝试使用该名称,所以我不得不经过调用Apple Developer Support的过程,最后重新获得了旧帐户的访问权限,并删除了名称完全相同的应用程序。 所以,现在我已经等了48个多小时,并且正在使用我正在使用的帐户,我正在尝试使用该应用程序名称,因为就像我所说的那样,它已被删除。 但事情是,它仍然说'应用程序名称已被使用'。 我为什么很困惑。 这个应用程序从来没有在应用程序商店,只是在testing阶段,但我完全删除旧帐户上的应用程序。 有没有人知道为什么这个名字还在?

如何find一种方法可能抛出并在Swift中捕获它们的错误

我正在使用NSFileManager.contentsOfDirectoryAtPath获取目录中的文件名数组。 我想使用新的do-try-catch语法来处理错误: do { let docsArray = try fileManager.contentsOfDirectoryAtPath(docsPath) } catch { // handle errors print(error) // this is the best I can currently do } 我docsPath一个错误可能是docsPath不存在,但我不知道如何捕捉这个错误。 而且我不知道可能发生的其他可能的错误。 文档示例 error handling文档有这样一个例子 enum VendingMachineError: ErrorType { case InvalidSelection case InsufficientFunds(centsNeeded: Int) case OutOfStock } 和 do { try vend(itemNamed: "Candy Bar") // Enjoy delicious snack } […]

什么是死亡和爆炸在Swift的exception堆栈?

在运行时崩溃的exception栈中,Swift经常说参数是Dead或者Exploded。 这是什么意思,这对于debugging目的是否重要? 例如: -> 0x100209cf0 <function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Dead, Arg[3] = Dead> of Swift._fatalErrorMessage (Swift.StaticString, Swift.StaticString, Swift.StaticString, Swift.UInt) -> ()+44>: brk #0x1 谢谢。

不能指定'() – > Void'types的值来input'(( – ) – > Void)!'

更新到Xcode 8testing版6后,我得到错误 不能指定'() – > Void'types的值来input'(( – ) – > Void)!' 在下面的func块中,第三行: // Button sub-class public class SCLButton: UIButton { var actionType = SCLActionType.none var target:AnyObject! var selector:Selector! var action:(()->Void)! public init() { super.init(frame: CGRect.zero) } required public init?(coder aDecoder: NSCoder) { super.init(coder:aDecoder) } override public init(frame:CGRect) { super.init(frame:frame) } // required public init?(coder aDecoder: […]