Инструмент xed
работает нормально:
xed --line 100 /Users/Anne/Desktop/Test/TestAppDelegate.m
Error
например,: спецификатор запрашивал 3-й, но есть только 2
Вышеприведенная ошибка просто указывает на то, что запрошенная строка находится вне диапазона.
Решение
Проверьте, действительно ли номер строки существует перед выполнением xed
.
Кратко написанный пример
// Define file and line number
NSString *filePath = @"/Users/Anne/Desktop/Test/TestAppDelegate.m";
int theLine = 100;
// Count lines in file
NSString *fileContent = [[NSString alloc] initWithContentsOfFile: filePath];
unsigned numberOfLines, index, stringLength = [fileContent length];
for (index = 0, numberOfLines = 0; index < stringLength; numberOfLines++)
index = NSMaxRange([fileContent lineRangeForRange:NSMakeRange(index, 0)]);
// The requested line does not exist
if (theLine > numberOfLines) {
NSLog(@"Error: The requested line is out of range.");
// The requested line exists
} else {
// Run xed through AppleScript or NSTask
NSString *theSource = [NSString stringWithFormat: @"do shell script \"xed --line %d \" & quoted form of \"%@\"", theLine, filePath];
NSAppleScript *theScript = [[NSAppleScript alloc] initWithSource:theSource];
[theScript executeAndReturnError:nil];
}
Примечание
Убедитесь, что правильно посчитали количество строк:
Подсчет строк текста