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

IOS set error message in string to show in alert

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

"error": { "message": "Incorrect email and/or password" }

或者这个:

"error": { "message": "You need to complete all fields" }

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

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

我试过这个代码:

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);

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

您确定要从服务器获取 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 after

中到底有什么
NSString *errorString = [userInfo objectForKey:@"error"];