簡體   English   中英

NSRange的問題

[英]Problem with NSRange

我遇到了NSRange的問題。 這是我的代碼:

NSRange range = [[[NSHTTPCookie requestHeaderFieldsWithCookies:[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:cookie]]] objectForKey:@"Cookie"] rangeOfString:@"x"];
NSLog(@"%f", range.length);
if (range.length >= 1) {
    NSLog(@"Do Something");
} else {
    NSLog(@"AUTHING");
}

控制台輸出:

0.000000
Do something

然后我第二次瀏覽代碼:

0.000000
AUTHING

這到底是怎么回事? NSNotFound我認為它不起作用,我不是唯一一個發現這個問題的人因此使用它不是一個解決方案。

謝謝你的幫助。

干杯

編輯:我嘗試使用NSLog(@“%d”,range.length),但它第一次運行時輸出錯誤,第二次運行是正確的。 我已經嘗試過使用NSNotFound認為奇怪的輸出是由於它是NSNotFound但它沒有觸發

如果你想查看是否使用-[NSString rangeOfString:]找到了字符串,你需要查看NSRange.location == NSNotFound:

if (range.location != NSNotFound) {
    // String was found
else {
    // String not found
}

作為一般性評論,如果您拆分嵌套方法調用並執行快速NSLog以查看正在進行的操作,則調試會更容易。 (我不擅長堅持這一點所以它並不意味着批評)。

我首先注意到的一件事是使用“%f”來顯示長度,嘗試使用%i(整數),你應該能夠得到正確的長度。 %f將始終顯示0.00000。

你用的是什么網址? 如果您從標題中提取數據,字符串“x”可能會也可能不會出現在字段中。 我建議NSLog-ing NSString *對象,你從字典中提取並檢查發生了什么。 例如:NSString * cookie = @“http://www.google.com/”;

NSHTTPCookieStorage *store = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSURL *url = [NSURL URLWithString:cookie];
NSDictionary *header = [NSHTTPCookie requestHeaderFieldsWithCookies: [store cookiesForURL:url]];
NSString *cookieParameter = [header objectForKey:@"Cookie"];    

NSLog(@"Cookie param is %@", cookieParameter);

// Test range of "x"
NSRange range = [cookieParameter rangeOfString:@"x"];
NSLog(@"%f", range.length); // will print out 0.00000
NSLog(@"%i", range.length); // will print out correct length (always 1 for "x")
NSLog(@"%i", range.location); // will print out the location of the first instance of "x"
if (range.length >= 1) {
    NSLog(@"Do Something");
} else {
    NSLog(@"AUTHING");
}

似乎代碼只是根據我所知道的來檢測字符串“x”的索引,這是預期的結果嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM