Как я получаю каждую строку от NSString?

Как насчет одноэлементного объекта, который будет обрабатывать поколения токенов? что-то похожее на это:

const tokenGenerator ={
  getTokenPromise: null,
  token: null,
  getToken(){
    if (!this.getTokenPromise){
      this.getTokenPromise = new Promise(resolve=>{
        /*supposed to be a http request*/
        if (!this.token){
          setTimeout(()=>{
            this.token = 'generated';
            resolve(this.token);
          },0)
        }else{
          resolve(this.token);
        }
      })
    }
    return this.getTokenPromise;
  }

вы можете ссылаться на этот же объект от перехватчиков.

см. Пример: JS FIddle ссылка: ссылка

7
задан Jason Coco 5 December 2008 в 01:41
поделиться

4 ответа

Следующий код является прямым из документации Apple относительно абзацев и разрывов строки:

unsigned length = [string length];
unsigned paraStart = 0, paraEnd = 0, contentsEnd = 0;
NSMutableArray *array = [NSMutableArray array];
NSRange currentRange;
while (paraEnd < length)
{
    [string getParagraphStart:&paraStart end:&paraEnd
    contentsEnd:&contentsEnd forRange:NSMakeRange(paraEnd, 0)];
    currentRange = NSMakeRange(paraStart, contentsEnd - paraStart);
    [array addObject:[string substringWithRange:currentRange]];
}

Я не на 100% уверен, будет ли это работать с 10,4

10
ответ дан 6 December 2019 в 06:51
поделиться

Я сначала заменю весь "\r" "\n", затем заменю весь "\n\n" "\n" и затем сделаю componentsSeparatedByString:@" \n".

5
ответ дан 6 December 2019 в 06:51
поделиться

Согласно ссылке класса NSString, NSString передают componentsSeparatedByCharactersInSet: доступно в OS X 10.5 или позже. Необходимо использовать componentsSeparatedByString:.

2
ответ дан 6 December 2019 в 06:51
поделиться

Прямо из моего проекта:

 NSString * fileContents = [NSString stringWithContentsOfFile:pathToFile encoding:NSUTF8StringEncoding error:nil];
 NSMutableArray * fileLines = [[NSMutableArray alloc] initWithArray:[fileContents componentsSeparatedByString:@"\r\n"] copyItems: YES];

Я не уверен, как сделать его, это автоматически работает с любым типом строки, заканчивающейся в 10,4.

3
ответ дан 6 December 2019 в 06:51
поделиться