Загрузка файла nib в NSData

#ios #objective-c #xcode #nsdata #nib

#iOS #objective-c #xcode #NSData #перо

Вопрос:

У меня возникли проблемы с загрузкой файла Nib, созданного:

 ibtool MyNib.xib --compile MyNib.nib
 

Я попытался использовать полный путь для всего. Я пробовал —output-format для чтения человеком-текст и двоичный файл1.

Это код:

 NSString* path = [[NSBundle mainBundle] pathForResource:@"MyView" ofType:@"nib"];

NSFileManager* fs = [[NSFileManager alloc] init];

BOOL isDir;
// Debugger shows this to be true
BOOL exists = [fs fileExistsAtPath:path isDirectory:amp;isDir];

NSError* error;
NSData* data = [NSData dataWithContentsOfFile: path
                                      options: nil
                                        error: amp;error];
 

Я проверяю, существует ли файл, что он и делает. Но не удается создать NSData. Ошибка содержит эту информацию:

«Не удалось завершить операцию. (Ошибка Cocoa 257.) » userInfo= 0x7c6d9c0 {NSFilePath=/Users/onbek/Library/ Поддержка приложений / Симулятор iPhone / 6.1 / Приложения/FE56BA5C-9333-4E7B-A13C-137E0357519B/MyApp.app/MyView.nib, NSUnderlyingError= 0x7c70ad0 «Не удалось завершить операцию. Отказано в разрешении»}

Это разрешения для файла:

 drwxr-xr-x   4 onbek  staff    136 26 Jun 19:56 MyView.nib
 

И его содержимое:

 -rw-r--r--  1 onbek  staff  5275 26 Jun 19:56 objects.nib
-rw-r--r--  1 onbek  staff  5983 26 Jun 19:56 runtime.nib
 

Я искал и не смог найти, почему я не могу создать объект NSData. Моя первоначальная информация, которую я использовал, чтобы выяснить это, была на http://www.indelible.org/ink/nib-loading / Загрузка необработанных данных наконечника.

Я пробовал много вещей, все из которых я пробовал после выполнения чистой сборки:

Игра с разрешениями. Я попытался заглянуть в папку derived data для своего проекта, скопировав созданный Xcode файл nib, скопировав его и посмотрев, смогу ли я получить его для создания объекта NSData. Этого не произошло. Удаление производных данных и сброс настроек симулятора до тошноты. Молитва.

Моя цель — иметь возможность загружать перо из произвольного местоположения (то есть загруженного).

Комментарии:

1. Может быть проблема с песочницей. Вы пробовали использовать методы, основанные на URL (т. Е. -[NSBundle URLForResource:withExtension:] И -[NSData dataWithContentsOfURL:options:error:] ), вместо методов, основанных на пути?