0

一意であるはずの文字列フィールドをデータベースに保持しています。したがって、テキストフィールドを使用してそのフィールドに新しいレコードを追加する場合は常に、そのようなレコードがすでに存在するかどうかをテストする必要があります。すでに「A」を追加している場合は、後で「a」を追加することもできないはずです。しかし、私のコードでは、「A」を追加すると、「A」は追加されませんが、「a」は追加されます。だから、この「ケース」の問題の解決策は何ですか。[someString compare:otherString options:NSCaseInsensitiveSearch]も試しましたが、うまくいきませんでした。

これが私のコードです:

isDuplicate = FALSE;

            for(int i=0; i<[streetArray count]; i++) // This array contains my field
            {
                strToCompare = (NSString *)[[streetArray objectAtIndex:i]Address];
                if ([[textfield1.text lowercaseString] isEqualToString:[strToCompare lowercaseString]]) // Here I compare stings by making them lower
                {
                    isDuplicate = TRUE;
                    break;
                }
            }

            if(isDuplicate == TRUE)
            {
                [self showAlert:nil withMessage:@"Data already exists"];
            }
4

2 に答える 2

2

ここで述べたように、すべての文字列を小文字のaNSSetまたはに入れることができます。NSMutableSetそれがまさにNSSetsが存在する理由であるため、それはあなたの問題を効率的に処理するでしょう。

于 2012-05-04T09:05:43.310 に答える
1

compare:options:NSCaseInsensitiveSearch:上のメソッドを使用すると機能するNSStringはずです。

if ([@"A" compare:@"a" options:NSCaseInsensitiveSearch] == NSOrderedSame) {
    NSLog(@"same");
}
于 2012-05-04T09:07:36.973 に答える