ios - isEqualToString 总是返回 False

标签 ios objective-c nsstring

在我开始之前这里有一些背景知识,基本上我们正在寻找将 UDP 响应与存储在我们应用程序的 Parse 数据库中的字符串进行比较。这个问题是我似乎无法让 isEqualToString 函数将字符串视为相等。这是我现在运行的代码,我已经尝试了一些我在其他问题中看到的解决方法,但它仍然不起作用。

- (BOOL) onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port
{
    if(tag == TAG_SINGLE_GRILL)
    {
        NSString *grillId = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        if(grillId.length > 11)
        {
            grillId = [grillId substringToIndex:11];
        }
        grillId = [NSString stringWithFormat:@"%@", grillId];
        if([grillId hasPrefix:@"GMG"])
        {
            for(int i = 0; i < [parseGrills count]; i++)
            {
                NSString *parseGrillId = [[parseGrills objectAtIndex:i] grillId];
                parseGrillId = [NSString stringWithFormat:@"%@", parseGrillId];
                //If we match the id, add it to found grills
                if([grillId isEqualToString:parseGrillId])
                {
                    //do stuff
                }
            }
        }
        NSLog(@"Grill ID : %@", grillId);
    }
    return TRUE;
}

parseGrills 是一个带有非常基本的 Grill 对象的 NSMutableArray,我使用 synthesize 作为属性,否则 .m 文件基本上是空的。

#import <Foundation/Foundation.h>

@interface Grill : NSObject

@property (nonatomic) NSString* grillId;
@property (nonatomic) NSString* ipAddress;

@end

这是调试器返回 false 后的屏幕截图

debugger SS 任何帮助将不胜感激。谢谢。

最佳答案

我猜他们是不同的编码。

我已经运行了这个实验,发现如果编码不同,它会返回NO。因此,请尝试使用以下代码将 parseGrillId 转换为 utf8

NSString *s1 = [NSString stringWithCString:"HELLO123" encoding:NSUTF8StringEncoding];
NSString *s2 = [NSString stringWithCString:"HELLO123" encoding:NSUTF16StringEncoding];
NSString *s3 = [NSString stringWithUTF8String:s2.UTF8String];

if ([s1 isEqualToString:s2]) {
    NSLog(@"s1 == s2");
}

if ([s1 isEqualToString:s3]) {
    NSLog(@"s1 == s3");
}

将打印 s1 == s3

关于ios - isEqualToString 总是返回 False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28507991/

相关文章:

iphone - 使用 NSUserDefaults 保存和加载数据需要帮助

objective-c - 在 NSString 实例中替换给定 unicode char 的正确方法是什么?

ios - NSString 不连接

iphone - RestKit 0.20 : Map relational data from local file

ios - 我可以使用滑动删除来使用 titleForDeleteConfirmationButtonForRowAtIndexPath 滑动来执行其他操作吗?

iphone - iAds 展示 iAds 的机制

iPhone RSS 阅读器——parseXML 不会加载某些 XML 提要

cocoa - 处理临时字符串的更好方法是什么?

ios - iAd 外部窗口弹出

iOS对话框消息框像下拉列表