Получение XML-текста файла .xib - PullRequest
0 голосов
/ 20 февраля 2012

Я знаю, что файлы .xib на самом деле являются файлами .xml (о чем свидетельствует, прежде всего, тот факт, что я могу переименовать их расширение и открыть их в текстовом редакторе и коде дешифрирования), поэтому теоретически можно было бы открыть xib как xmlразобрать его в приложении.Я посмотрел в настройках сборки для моего примера приложения и обнаружил, что XIB не скомпилированы, а скорее являются ресурсами пакета копирования.Звучит хорошо, правда?Но файлы выдают мне (нулевые) строки, когда я пытаюсь получить их текст с помощью следующих методов:

 NSString *string = [[NSBundle mainBundle]pathForResource:@"Empty" ofType:@"xib"];
    NSString *xmlString = [[NSString stringWithContentsOfFile:string encoding:NSUTF8StringEncoding error:nil] retain];
    NSLog(@"%@", xmlString);
    [textView setText:xmlString];

Это NSLog (null) как для xmlString, так и для string.Итак, я подумал о том, чтобы попробовать его с другим ресурсом Copy Bundle Resource, поэтому я изменил string на следующее:

NSString *string = [[NSBundle mainBundle]pathForResource:@"InfoPlist" ofType:@"strings"];

, и он записал идеальный путь к файлу!Тем не менее, xmlString все еще зарегистрирован (ноль).

Затем я попытался получить код ошибки, и я получил это:

The operation couldn’t be completed. (Cocoa error 258.)

Это заставляет меня думать, что за этим происходит некоторая дополнительная компиляциясцены с файлами .xib (я где-то читал, что они превращаются компилятором в перья), что делает их нечитаемыми или недоступными.Но есть известные мне приложения ( Интерфейс является ярким примером), которые могут читать и записывать файлы .xib.

Итак, кто-нибудь может помочь мне получить xml из .xibфайл

1 Ответ

0 голосов
/ 20 февраля 2012

На самом деле xib-файлы компилируются в nib-файлы. Используйте Show Package Contents на скомпилированном .app, и вы увидите, что там нет файлов xib, но есть файлы nib.

Редактировать Похоже, формат файла пера является закрытым форматом. Но я не уверен.

Форма Apple Документация :

В оригинальном формате используются файлы с расширением .nib. Это собственный двоичный формат для представления объектов интерфейса пользователя и соединений Interface Builder.

Редактировать 2 Похоже, есть какая-то опция , чтобы предотвратить компиляцию XCED-файлов в файлы NIB. Но я все еще не уверен, как это сделать, и каков реальный результат.

Редактировать 3 Я попробовал это на Xcode. Когда я установил в Flatten Complied Xib файлы на «Нет», я все еще получил файлы nib в двоичном файле, но на этот раз они не были сжаты. Внутри этих nib-файлов есть файл designtime.nib, имеющий формат xml.

...