IOS 在字符串中设置错误消息以显示在警报中

Posted

技术标签:

【中文标题】IOS 在字符串中设置错误消息以显示在警报中【英文标题】:IOS set error message in string to show in alert 【发布时间】:2015-07-19 18:12:21 【问题描述】:

我已经为我的问题寻找一个简单的解决方案,但我找不到任何简单的解决方案。 从服务器我收到一些消息,这些消息是这样的字符串:

“错误”: "message": "不正确的电子邮件和/或密码"

或者这个:

“错误”: "message": "您需要填写所有字段"

每次来自服务器的每次调用都会返回不同的消息。

在我的警报视图中,我只需要显示消息部分:电子邮件和/或密码不正确

我试过这个代码:

NSDictionary *userInfo = [error userInfo];
NSString *errorString = [userInfo objectForKey:@"error"];
NSArray* foo = [errorString componentsSeparatedByString: @"message"];NSString* day = [foo objectAtIndex: 1];
NSCharacterSet *trim = [NSCharacterSet characterSetWithCharactersInString:@"\\/:"];
NSString *result = [[day componentsSeparatedByCharactersInSet:trim] componentsJoinedByString:@" "];
NSLog(@"%@", result);

但问题是它不是动态的, 如何获取此字符串的消息部分并删除其中的所有特殊字符并将它们设置为另一个字符串以在警报中动态显示它们?

【问题讨论】:

您到底从服务器收到了什么?这在我看来像 JSON,或者至少它应该是 JSON。是你的服务器吗,能不能把收到的消息改一下? 它是我从 nserror.userInfo 中的服务器收到的响应错误 我怀疑你在这里做的正确,显示更多代码,你显示的日志来自哪里? error 来自哪里? 你发布的是字典..你为什么要进行字符串操作 【参考方案1】:

您确定从服务器获取 NSString 吗?你可以试试这个字符串吗?

NSString *errorMessage = userInfo[@"error"][@"message"];

UPD1: 如果在您的代码的第一个字符串之后,您在 errorMessage 中获得了 "error": "message": "Incorrect email and/or password" ,请执行以下操作:

    NSString *errorString = [userInfo objectForKey:@"error"];
    NSError *err = nil;
    //Here will be your message and other
    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:[errorString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&err];
    NSString *message = dict[@"error"][@"message"];

但要确保在 userInfo 字典(在断点处截屏)和 errorString 之后显示你到底有什么

NSString *errorString = [userInfo objectForKey:@"error"];

【讨论】:

是的,我确定它是一个 NSString。 @Sattar 太好了。所以使用我来自 upd1 的代码。和 NSString *message = dict[@"error"][@"message"];将是您的信息。 感谢它完美地工作......你能解释一下它是如何工作的吗? @Sattar userInfo[@"error"] 中有 json,但它表示为字符串。 [NSJSONSerialization JSONObjectWithData: options:error:] 返回 id 对象,它表示我们转换为 NSDictionary 的 JSON 格式的给定数据(我们知道它是字符串语法的字典)。我们的字符串表示为 UTF-8 格式的数据。 Apple 谢谢,我现在明白了:)

以上是关于IOS 在字符串中设置错误消息以显示在警报中的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS8-iOS9 中设置提醒/警报

如何在 iOS 中设置闹钟?

Ionic 3 - 在警报控制器中设置 id 值

向权限模式警报添加描述

如何在 Flutter 中设置闹钟?

在 iOS 中以编程方式禁用设置警报