3

NSMutableArrayさて、文字列で埋められた tableView を含むポップオーバーがあります。しかし、常に 1 つのblank/empty文字列がNSMutableArrayあり、ポップオーバー テーブルには常に空のセルがあります。プロジェクトをシングル ステップで実行したところ、空の文字列が文字列定数 (_NSCFConstantString) であることがわかりました。

簡単な空文字列テストを実行して、空文字列の出現を取り除こうとしました。

[str isEqualToString:@""] 

しかし、これは機能しません。配列内の空の文字列が_NSCFConstantString型であるためだと思います...?

だから私が疑問に思っているのは、オブジェクトがタイプ_NSCFConstantStringであるかどうかをテストする方法があるかどうか、または文字列が空かどうかをテストするより良い方法があるかどうかです...

私の問題に関連する私の完全なコードは次のとおりです。

    NSString *str;
    for (int i = 0; i < [self.flattenedDocList count]; i++) {
        str = [self.flattenedDocList objectAtIndex:i];
        if(![str isKindOfClass:[NSString class]]){
            [self.flattenedDocList removeObject: str];
            NSLog(@"Just Deleted:%@",str);
        }else if([str isEqualToString:@""]){
            [self.flattenedDocList removeObject: str];
            NSLog(@"Just Deleted:%@",str);
        }
    }

NSNull最初の if ステートメントは、配列内のオブジェクトを取り除くためのチェックです。残念ながら、これは文字列定数を取り除きません:/

ありがとう、どんな助けでも大歓迎です。

4

2 に答える 2

0

しかし、これは機能しません。配列内の空の文字列の型が_NSCFConstantString...であるためだと思います。

そうではありません。_NSCFConstantStringは の具象サブクラスでNSStringあるため、動作するはずです。

文字列が実際には空の文字列ではないか、配列に含まれていない可能性があります。偶然にスペース(またはそれ以上)であるかどうかを確認してください。そのlength性質などを調べます。

ところで、変更可能なコレクションを列挙中に変更することは非常に悪い考えです。論理エラーが発生する可能性があります。たぶん、それはこの場合のあなたの現在の問題の一部でもあります.

于 2013-07-06T05:44:11.637 に答える