标签: nserror

Swift不会将Objective-C NSError**转换为throws

我有一些Objective-C遗留代码,它声明了类似的方法

- (void)doSomethingWithArgument:(ArgType)argument error:(NSError **)error
Run Code Online (Sandbox Code Playgroud)

正如这里所写的https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/AdoptingCocoaDesignPatterns.html

Swift会自动将产生错误的Objective-C方法转换为根据Swift的本机错误处理功能引发错误的方法.

但在我的项目中描述的方法如下所示:

object.doSomething(argument: ArgType, error: NSErrorPointer)
Run Code Online (Sandbox Code Playgroud)

此外,当我尝试使用它们时,它会抛出运行时异常:

let errorPtr = NSErrorPointer()
object.doSomething(argumentValue, error: errorPtr)
Run Code Online (Sandbox Code Playgroud)

我还需要更多东西来将Objective-C"NSError**"方法转换为Swift"trows"方法吗?

objective-c nserror ios swift

22
推荐指数
1
解决办法
5906
查看次数

"错误"类型的值没有成员"代码"

我在移动测试应用程序的Xcode 8 Beta中5和转换我的代码斯威夫特3.我离开了我与有关开关的一些错误ErrorNSError.我在Xcode中得到一个错误,'Value of type 'Error' has no member 'code'.我仍然可以使用localizedDescription.是code不再内的值Error或者是它只是一个错误在Xcode?

nserror ios swift swift3 xcode8

21
推荐指数
1
解决办法
8539
查看次数

如何在UIWebView中检测和处理HTTP错误代码?

我想在收到HTTP错误404等时通知用户.我怎么能检测出来?我已经尝试过了

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
Run Code Online (Sandbox Code Playgroud)

但是当我收到404错误时它没有被调用.

iphone objective-c uiwebview nserror ios

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

Swift,NSJSONSerialization和NSError

问题是当数据不完整NSJSONSerialization.JSONObjectWithData导致应用程序崩溃unexpectedly found nil while unwrapping an Optional value而不是通知我们使用NSError变量时.所以我们无法阻止崩溃.

您可以在下面找到我们正在使用的代码

      var error:NSError? = nil

      let dataToUse = NSJSONSerialization.JSONObjectWithData(receivedData, options:   NSJSONReadingOptions.AllowFragments, error:&error) as NSDictionary

    if error != nil { println( "There was an error in NSJSONSerialization") }
Run Code Online (Sandbox Code Playgroud)

直到现在我们都无法找到解决方法.

nserror nsjsonserialization swift

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

Swift:在didFailWithError中处理NSError的Corelocation

我正在使用CoreLocation来成功确定用户的位置.但是,当我尝试使用CLLocationManagerDelegate方法时:

func locationManager(_ manager: CLLocationManager!, didFailWithError error: NSError!)
Run Code Online (Sandbox Code Playgroud)

我遇到了错误术语的问题.

func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
    println("didFailWithError \(error)")

    if let err = error {
        if err.code == kCLErrorLocationUnknown {
            return
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这会导致"使用未解析的标识符kCLErrorLocationUnknown"错误消息.我知道kCLErrors是枚举,并且它们已经在Swift中进化但我被卡住了.

nserror didfailwitherror swift ios8

15
推荐指数
2
解决办法
5515
查看次数

NSError域/自定义域 - 约定和最佳实践

NSError需要一个域,我理解它可以分割错误代码的范围.

人们会预料到某个地方存在domain.error代码的注册表,但我无法发现它.

据说这可以用于查找错误的本地化描述.

有没有人有任何已知的最佳实践来处理错误域和代码?权威参考(主要开发人员或框架制造商)是最佳的,但即使是详细描述良好惯例的博客也是有用的.

在您的项目中,您是否维护错误域/代码的注册表,这些注册表映射到基于域/代码的错误对象的本地化描述,恢复,众所周知的userinfo密钥或类似工厂?

或者你通常只是拼凑一些域和一些代码,并依赖于众所周知的用户信息密钥,如NSLocalizedDescriptionKey等,在你的定制NSError域?

cocoa cocoa-touch objective-c nserror

13
推荐指数
1
解决办法
3205
查看次数

在iOS中正确使用NSErrorRecoveryAttempting,NSError和UIAlertView是什么?

我无法找到正确的方法的例子来使用NSError,UIAlertViewNSErrorRecoveryAttempting一起在iOS.我能找到的大多数文档和示例都涵盖了OS X上的等效功能,其中相关行为由Cocoa集成.但是在iOS中,似乎有必要"手工"做到这一点,而且我找不到它如何完成的好例子.

我非常感谢使用NSError中的信息来支持从NSErrors报告给用户的恢复尝试的一些最佳实践示例.

error-handling cocoa-touch uialertview nserror ios

13
推荐指数
1
解决办法
1950
查看次数

如何从NSError获取更多有用信息?

我想从中获得一些有用的信息NSError.如果我打印出来[error userInfo],我会得到以下信息:

{
    NSFilePath = "/Users/apple/Library/Application Support/iPhone Simulator/5.1/Applications/08260B6A-4D65-48DF-ADD1-FFC8750081E8/Documents/abc";
    NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain Code=17 \"The operation couldn\U2019t be completed. File exists\"";
}
Run Code Online (Sandbox Code Playgroud)

我想显示最后一行:"文件存在",但我怎么能把它拿出来?

我试过了:

localizedDescription
localizedFailureReason
localizedRecoverySuggestion
localizedRecoveryOptions
recoveryAttempter
Run Code Online (Sandbox Code Playgroud)

其中没有显示"文件存在".

nserror ios

13
推荐指数
1
解决办法
2万
查看次数

修改NSError localizedDescription

您是否知道NSError在实例化之后是否有一种很好的方法来设置/修改localgedcription,而不是重新创建它?我没找到任何.

cocoa cocoa-touch nserror ios

13
推荐指数
3
解决办法
8512
查看次数

如何获取函数抛出的错误列表?

现在使用Swift标记了一些函数throws,这迫使开发人员在do - try catch块内调用函数.但是开发人员如何知道该函数抛出的不同异常列表?

作为参考,这是一行Java代码:

static void  employeeAge(int age) throws MyExceptionA,MyExceptionB
Run Code Online (Sandbox Code Playgroud)

很明显,例外是2 MyExceptionA,MyExceptionB并且开发人员可以决定采取不同的行动取决于错误.

我们可以在Swift上实现同样的目标吗?

error-handling nserror ios swift

13
推荐指数
1
解决办法
1506
查看次数