2010-07-15 2 views
0

сверхтвердых ВОПРОС

Вот мой Projet:Как загрузить изображение в каталог, отличный от NSBundle?

Я использую 3000 JPEGs в проекте iPhone. В нормальной ситуации 3000 файлов загружаются в «NSBundle» (инкапсулируются с помощью приложения), а затем загружаются на iPhone. Проблема в том, что приложение составляет около 500 мо.

Так что я хотел бы скопировать изображения в другой каталог (например, «Документы»), чем пучок, а затем УДАЛИТЬ все jpegs из пакета. Моя идея заключается в том, что после первого запуска приложения приложение будет только 2Mo, и следующие запуски будут очень быстрыми.


Моя первая мысль была:

файл в Bundle: путь к файлу в файле назначения Bundle : путь, где я хочу, чтобы поместить файл

if([manager copyItemAtPath:fileInBundle toPath:fileDestination error:&error]) 
    if([manager removeItemAtPath:fileInBundle error:&error]) 

Из Конечно, я попробовал «moveItemToPath» ^^

Копия работает отлично, если вы копируете снаружи «NSBundle», но удаление невозможно:

NSFilePath = "/var/mobile/Applications/4A173D2E-5CFC-4D12-978C-68CF5C0ED352/myLovelyApp.app/Main.jpg"; 
    NSUnderlyingError = Error Domain=NSPOSIXErrorDomain Code=1 "Operation could not be completed. Operation not permitted"; 

Очевидно, что я проверить, если main.jpg существует на '[менеджер fileExistsAtPath: fileInBundle]' и я проверить нестираемую возможность пути: '[менеджер isDeletableFileAtPath: fileInBundle] (НЕТ!)

So после, я проверяю атрибуты POSIX Permission для файла и Directory:
NSDictionary * whatPermissions = [управляющие атрибутыOfItemAtPath: fileInBundle error: & error];
NSLog (@ "Файл POSiX Разрешение:% @", [whatPermissions objectForKey: @ "NSFilePosixPermissions"]);

Я получаю 493 -> Chmod 755 -> read-Write-Exe/read-Exe/read-Exe. Так невозможно удалить или записать файл в этом NSBundle.

Я пытался заставить переключая Атрибут POSIX РАЗРЕШЕНИЯ: [менеджер SetAttributes: разрешение ofItemAtPath: fileInBundle ошибки: & ошибки] // помещает разрешение Posix 511 (CHMOD 777)

Но did'nt Работа.


Вторая идея: Так Xcode здание Окружение было возможно, мое решение с INSTALL флагом РАЗРЕШЕНИЯ:
'и + ш, Go-W, A + хХ'

, но я пробовал много возможность и ничего не работает (может быть, я не нашел хорошего) i Пробовал: 'u + rwx, go + rwx, a + rwx', 'u + rw, go-rw, a + rwX' ...

Но ничего не произошло Я нашел «ALTERNATE_PERMISSIONS_FILES» с «ALTERNATE_MODE», но, похоже, мне нужно заполнить список мой 3000 jpg один за другим в параметрах xcode. И когда я попробовал всего 10 файлов.
Это не сработало. Должен сказать, что я никогда не нахожу учебник или сообщение в блоге по этим темам. Поэтому, если вы знаете один из них. пожалуйста, не стесняйтесь делиться.

В Системном руководстве по созданию XCode нет НИКАКОЙ ПОМОЩИ !!!!


третья идея:

Я попытался изменить целевое назначение: добавить этап копирования файлов в целевой системе. И затем поместите все изображение внутри, но похоже, что он не действует, и файл не загружается на iPhone.

КАК МОЖНО СТАТЬ НАПРАВЛЕНИЕМ ФАЙЛОВ 3000 ИЗОБРАЖЕНИЙ В КАТАЛОГЕ И ТОГДА УДАЛЯТЬ ЭТО.

Вот как iPhone каталоги выглядит следующим образом:

"private/var/mobile/Applications/4A173D2E-5CFC-4D12-978C-68CG5C0ED245/myLovelyApp.app/number7_S.png", 
"private/var/mobile/Applications/4A173D2E-5CFC-4D12-978C-68CG5C0ED245/myLovelyApp.app/number8_N.png", 
"private/var/mobile/Applications/4A173D2E-5CFC-4D12-978C-68CG5C0ED245/myLovelyApp.app/number8_S.png", 
"private/var/mobile/Applications/4A173D2E-5CFC-4D12-978C-68CG5C0ED245/myLovelyApp.app/number9_N.png", 
"private/var/mobile/Applications/4A173D2E-5CFC-4D12-978C-68CG5C0ED245/myLovelyApp.app/number9_S.png", 
"private/var/mobile/Applications/4A173D2E-5CFC-4D12-978C-68CG5C0ED245/Documents", 
"private/var/mobile/Applications/4A173D2E-5CFC-4D12-978C-68CG5C0ED245/Library", 
"private/var/mobile/Applications/4A173D2E-5CFC-4D12-978C-68CG5C0ED245/Library/Caches", 
"private/var/mobile/Applications/4A173D2E-5CFC-4D12-978C-68CG5C0ED245/Library/Preferences", 
"private/var/mobile/Applications/4A173D2E-5CFC-4D12-978C-68CG5C0ED245/Library/Preferences/.GlobalPreferences.plist", 
"private/var/mobile/Applications/4A173D2E-5CFC-4D12-978C-68CG5C0ED245/Library/Preferences/com.apple.PeoplePicker.plist", 
"private/var/mobile/Applications/4A173D2E-5CFC-4D12-978C-68CG5C0ED245/tmp", 

Я хотел бы переместить файл из NSBundle в папку Documents.

СПАСИБО ЗА ПОМОЩЬ

+1

Я склонен думать, что это больше всего ** SUPER LONG QUESTION ** – mvds

ответ

0

Ваш NSBundle никогда не должен быть изменен во время выполнения, так как приложение кода, подписанный Apple. При редактировании сверток, вы рискуете Падает:

This is the bundle directory containing the application itself. Because an application must be signed, you must not make changes to the contents of this directory at runtime. Doing so may prevent your application from launching later.

(Source - Таблица 1-1 в разделе «Файловая система»)

Кроме того, расслоение быть меньше, не уменьшит время загрузки - основной причиной наличия меньшего пакета является ускорение загрузки магазина приложений. То, что вы всегда можете сделать, это разместить изображения где-нибудь, а затем загрузить изображения в каталог документов при первом запуске.

+0

Есть ли способ установить на iPhone изображение за пределами NSBundle? – xeonarno

+0

Не без открытия приложения для загрузки файлов из Интернета. App Store устанавливает только установочный пакет на устройстве. – jrtc27

+0

на самом деле это приложение «только один релиз». Поэтому у меня нет какой-либо проверки или процесса аппроксимации. Я просто замечаю, что когда я даю ссылку на 3000 JPG в приложении. Для запуска требуется много времени. – xeonarno

0

My idea is that after the first launch of the app, the app will be only 2Mo and the next launches will be very fast.

Так возникла проблема, что для создания и развертывания версии разработки этого приложения требуется много времени? Или ваша проблема в том, что сборка готовой продукции требует много времени для запуска на устройстве конечного пользователя?

Последний Xcode действительно намного лучше с постепенным копированием только измененных ресурсов. Изменение одного изображения должно привести только к одной быстрой копии и, конечно же, не к 3000 из них.

+0

на самом деле это приложение «только один релиз». Поэтому у меня нет какой-либо проверки или процесса аппроксимации. Я просто замечаю, что когда я даю ссылку на 3000 JPG в приложении. Для запуска требуется много времени. – xeonarno

Смежные вопросы