标签: nserror

我可以以某种方式获取 NSErrorDomain: CloudPhotoLibraryErrorDomain 的可用错误代码常量列表吗?

NSErrorDomain有没有办法获取苹果为:提供的代码常量列表CloudPhotoLibraryErrorDomain。具体来说,我正在寻找 code 的常量81

欢迎任何意见/建议!

xcode nserror

7
推荐指数
0
解决办法
208
查看次数

NSLog,NSError,访问不良

我正在做一个相当普通的addPersistentStore NSPersistentStoreCoordinator,它生成了一个错误代码.

所以我去了NSLog它,当我这样做时出现访问错误:

    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
Run Code Online (Sandbox Code Playgroud)

这似乎是常见的习语.

当我重新格式化错误语句时,如下所示:

     NSLog(@"Unresolved error   %@",   [error userInfo]);
Run Code Online (Sandbox Code Playgroud)

......问题消失了.

甚至NSZombie也没有正确捕获错误的访问错误!

有任何想法吗?

cocoa objective-c nslog nserror

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

NSError:使用nil检测错误实际上是否会关闭错误报告?

我养成了以这种方式编写错误处理的习惯:

 NSError* error = nil;
 NSDictionary *attribs = [[NSFileManager defaultManager] removeItemAtPath:fullPath error:&error];
 if (error != nil) {
  DLogErr(@"Unable to remove file: error %@, %@", error, [error userInfo]);
  return; 
 }  
Run Code Online (Sandbox Code Playgroud)

但看文档似乎我错了:

- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error
Run Code Online (Sandbox Code Playgroud)

如果发生错误,则返回时包含描述问题的NSError对象.如果您不想要错误信息,请传递NULL.

从技术上讲,nil和NULL之间没有区别,所以这是否意味着我实际上关闭它并且永远不会收到错误消息(即使上面示例中的删除失败了)?有没有更好的方法来编码?

谢谢.

null objective-c nserror

6
推荐指数
2
解决办法
6581
查看次数

更新NSError UserInfo

我正在尝试NSError使用更多信息更新对象.例如,api调用可能会失败,我想更新从api类返回的错误对象与视图控制器信息(导致错误的方法名称,客户端消息,任何其他信息).UserInfo字典没有setter方法,并且尝试为字典设置值会引发异常(我认为不符合键值代码).我想过NSError用更新的用户信息创建一个新对象,但我不确定我是否会丢失信息.

更新NSError对象的用户信息字典的最佳方法是什么?

error-handling objective-c nserror ios

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

iOS9更新AFNetworking调用以使用HTTPS的正确方法是什么(错误-1200,-9824)?

我正在从iOS8切换到iOS9,并通过HTTPS进行AFNetworking Web服务调用,这些调用在不再有效之前有效.我收到了error -1200,error -9824问题与使用自签名证书有关.

错误域= kCFErrorDomainCFNetwork代码= -1200"发生SSL错误,无法建立与服务器的安全连接." UserInfo = {NSErrorFailingURLStringKey = [server url],NSLocalizedRecoverySuggestion =您是否还要连接到服务器?,_ kCFNetworkCFStreamSSLErrorOriginalValue = -9824

我看到了这个相关的问题:NSURLSession的IOS9 SSL错误,但有以下答案,但答案很神秘,并没有真正告诉我如何解决这个问题.

ATS仅信任由知名CA签署的证书,所有其他证书都被拒绝.因此,具有自签名证书的唯一解决方案是使用NSExceptionDomains设置异常.

在iOS9上更新AFNetworking调用以使用HTTPS的正确方法是什么?

在过去,我使用了许多变通方法,包括一种回应方式NSURLAuthenticationChallenge,但我正在寻找更明确的东西.

ssl https nserror afnetworking-2 ios9

6
推荐指数
1
解决办法
4033
查看次数

在Swift 2中处理异步闭包错误的最佳方法是什么?

我使用了很多异步网络请求的(顺便说一句任何网络请求的iOS需要通过异步),我发现的方式来更好地应对来自苹果的错误,dataTaskWithRequest它并不支持throws.

我有这样的代码:

func sendRequest(someData: MyCustomClass?, completion: (response: NSData?) -> ()) {
    let request = NSURLRequest(URL: NSURL(string: "http://google.com")!)

    if someData == nil {
        // throw my custom error
    }

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data, response, error in

        // here I want to handle Apple's error
    }
    task.resume()
}
Run Code Online (Sandbox Code Playgroud)

我需要解析我可能的自定义错误并处理可能的连接错误dataTaskWithRequest.引入了Swift 2 throws,但你不能抛弃Apple的关闭,因为它们没有抛出支持并且运行异步.

我只看到添加到我的完成块NSError返回的方法,但据我所知使用的NSError是旧式的Objective-C方式.ErrorType只能用于投掷(afaik).

使用Apple网络闭包时,处理错误的最佳和最现代的方法是什么?根据我的理解,任何异步网络功能都没有办法投入使用吗?

asynchronous throw nserror swift

6
推荐指数
1
解决办法
3063
查看次数

无法理解NSError/NSObject指针传递行为

我现在对指针的指针很困惑,即使我已经读过为什么NSError需要双重间接?(指向指针的指针)NSError*vs NSError**等等.

我做了一些思考,仍然有一些问题.

在这里我写了这个:

NSError *error = [NSError errorWithDomain:@"before" code:0 userInfo:nil];
NSLog(@"outside error address: %p", &error];
[self doSomethingWithObj:nil error:&error];
Run Code Online (Sandbox Code Playgroud)

为了测试上面的NSError方法,我写了这个:

- (id)doSomethingWithObj:(NSObject *)obj error:(NSError *__autoreleasing *)error
{
    NSLog(@"inside error address: %p", error);
    id object = obj;
    if (object != nil)
    {
        return object;
    }
    else
    {
        NSError *tmp = [NSError errorWithDomain:@"after" code:0 userInfo:nil];
        *error = tmp;
        return nil;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我发现两个日志记录地址不同.这是为什么?

2016-08-19 19:00:16.582 Test[4548:339654] outside error address: 0x7fff5b3e6a58
2016-08-19 19:00:16.583 Test[4548:339654] inside error address: …
Run Code Online (Sandbox Code Playgroud)

pointers objective-c nserror ios

6
推荐指数
1
解决办法
206
查看次数

为什么Error总是NSError?

我在Playground上使用Swift 3定义了以下类:

class MyError: Error {

}
Run Code Online (Sandbox Code Playgroud)

然后,我创建一个这样的类的实例,并检查它是否是一个 NSError

let firstError = MyError()
firstError is NSError // Output: false
Run Code Online (Sandbox Code Playgroud)

输出是预期的,我也得到一个警告,表明Cast from 'MyError' to unrelated type 'NSError' always fails.这对我来说很有意义,但是如果我稍微改变一下代码并将变量声明为一个Error,我会得到一个奇怪的结果:

var secondError: Error
secondError = MyError()
secondError is NSError // Output: true
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我会在最后一行中收到警告'is' test is always true.当模型被定义为round()的另一种方式时,我不明白为什么Error一直是一个.知道这里发生了什么吗?NSErrorNSError: Error

nserror swift swift3

6
推荐指数
1
解决办法
628
查看次数

Swift 3.1:将自定义错误转换为NSError以访问其域属性时发生崩溃

我的Swift应用程序有一个自定义错误系统,MyError它只是一个符合的简单类Error.现在,只要第三方库(PromiseKit)尝试将此错误转换为NSError然后访问其domain属性,应用程序就会崩溃.在我自己的代码中,这样做会按预期工作,那么为什么它会在库中崩溃以及处理它的正确方法是什么?

Crashed: com.apple.main-thread
0  libswiftCore.dylib             0x1011d86d8 _hidden#19226_ (__hidden#19178_:1788)
1  libswiftCore.dylib             0x1011cda3c _hidden#19206_ (__hidden#19447_:4045)
2  libswiftCore.dylib             0x1011cda3c _hidden#19206_ (__hidden#19447_:4045)
3  libswiftCore.dylib             0x1011cdc90 swift_getTypeName (__hidden#19406_:1731)
4  AppName                        0x1001dafec specialized (_adHocPrint_unlocked<A, B where ...> (A, Mirror, inout B, isDebugPrint : Bool) -> ()).(printTypeName #1)<A, B where ...> (Any.Type) -> () (MyError.swift)
5  AppName                        0x1001db4f0 specialized specialized _adHocPrint_unlocked<A, B where ...> (A, Mirror, inout B, isDebugPrint : Bool) -> () (MyError.swift)
6  AppName                        0x1001dafb4 specialized _debugPrint_unlocked<A, …
Run Code Online (Sandbox Code Playgroud)

nserror ios swift swift3

5
推荐指数
1
解决办法
1404
查看次数

NSError 和 Swift 中的错误

我已经看到已经有一个关于 Swift和Swift 之间差异的问题,我知道这些差异。但是,我不理解下面代码片段的行为,因为它编译正确。Swift 的错误处理机制要求每个未出现在带有 throws 子句的函数中的 do-catch 块都包含一个通用处理程序(要么不包含任何其他内容,要么包含一个for Error)。然而,使用似乎具有相同的效果。这里有人知道原因吗?我在另一个问题中读到“任何符合 ErrorType 的类都可以转换为 NSError。这些功能在文档中进行了描述。”。然而,该答案指出的文档并没有向我澄清这一点,因为它重点关注我没有使用的 Objective-C。NSErrorErrorcatchcatchNSError

import Foundation
extension Int : Error {}
extension String : Error {}

func fErr() throws {
  let a = Int(readLine()!)!
  if a > 20 {
    throw 42
  } else {
    throw "An error occurred"
  }
}

func gErr() {
  do {
    try fErr()
  } catch let e as NSError {
    print(e)
  }
}
Run Code Online (Sandbox Code Playgroud)

error-handling nserror swift do-catch

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