首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >rangeOfString:奇怪的NSRange结果

rangeOfString:奇怪的NSRange结果
EN

Stack Overflow用户
提问于 2013-01-05 07:24:01
回答 1查看 553关注 0票数 0

试图弄清楚为什么NSMutableString:rangeOfString:会返回非常奇怪的结果。NSLog向我展示了如下结果:

location=9223372036854775807 length=0:This是一个测试

我的测试字符串不包含“@”,所以我应该使用location=0 length=0。奇怪的位置不断出现,直到字符串实际包含“@”,然后位置和长度都正确。我在下面的代码片段中遗漏了什么?

ServerPacketMotd.h

代码语言:javascript
运行
复制
typedef struct _serverPacketMotdStruct
{
    int8_t  type;           /* SP_MOTD */
    int8_t  pad1;
    int8_t  pad2;
    int8_t  pad3;
    int8_t  line[80];
} serverPacketMotdStruct;

ServerPacketMotd.m

代码语言:javascript
运行
复制
#import "ServerPacketMotd.h"

@interface ServerPacketMotd()
{
    NSMutableString *buffer;
}
@end

@implementation ServerPacketMotd

- (id)init
{
    if( !( self = [super init] ) )
        return nil;

    buffer = [[NSMutableString alloc] init];

    return self;
}

- (NSMutableData *)handlePacket:(NSData *)data withTag:(long)tag
{
    serverPacketMotdStruct gamePacket;
    uint16_t size = sizeof(serverPacketMotdStruct);
    NSRange packetWindow = NSMakeRange(0, size);
    NSRange atAtAt = NSMakeRange(0,0);

    while (expression)
    {
        [data getBytes:&gamePacket range:packetWindow];
        [buffer appendFormat:@"%s\n", gamePacket.line];

        atAtAt = [buffer rangeOfString:@"@@@"];
        NSLog(@"XXX location=%lu length=%lu:%@", atAtAt.location, atAtAt.length, buffer);
}
EN

回答 1

Stack Overflow用户

发布于 2013-01-05 07:25:57

检查是否为atAtAt.location == NSNotFound。位置为0表示在位置0找到了字符串,但这并不意味着找不到它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14166666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档