Как считать количество строк в строке Objective C (NSString)?

Вам не нужно делать это с некоторыми исключениями, так как вы можете получить предупреждение, если объект, на который вы указываете функцию, - volatile или const - обычно имеет другой атрибут.

void ee(void *q)
{
    pritntf("%p", q);
}

volatile int g;
const int f;

int main()
{

    ee(&g);
    ee(&f);
}

дает это предупреждение:

<source>: In function 'main':

<source>:17:8: warning: passing argument 1 of 'ee' discards 'volatile' qualifier from pointer target type [-Wdiscarded-qualifiers]

     ee(&g);

        ^~

<source>:6:15: note: expected 'void *' but argument is of type 'volatile int *'

 void ee(void *q)

         ~~~~~~^

<source>:18:8: warning: passing argument 1 of 'ee' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]

     ee(&f);

        ^~

<source>:6:15: note: expected 'void *' but argument is of type 'const int *'

 void ee(void *q)

         ~~~~~~^

Compiler returned: 0
26
задан freddiefujiwara 21 November 2011 в 11:14
поделиться

2 ответа

Ну, не очень эффективный, но приятный на вид способ -

NSString *string = @"abcde\nfghijk\nlmnopq\nrstu";
NSInteger length = [[string componentsSeparatedByCharactersInSet:
                                [NSCharacterSet newlineCharacterSet]] count];

Swift 4:

myString.components(separatedBy: .newlines)
36
ответ дан Jack 28 November 2019 в 06:13
поделиться

Apple рекомендует этот метод:

NSString *string;
unsigned numberOfLines, index, stringLength = [string length];

for (index = 0, numberOfLines = 0; index < stringLength; numberOfLines++)
    index = NSMaxRange([string lineRangeForRange:NSMakeRange(index, 0)]);

См. Статью . Они также объясняют, как считать строки в переносе текста.

44
ответ дан 28 November 2019 в 06:13
поделиться