Конвертировать основные данные в NSString - PullRequest
0 голосов
/ 10 апреля 2011

Я хочу создать функцию резервного копирования в моем приложении iCollege ( App Store ). Данные должны быть отправлены по электронной почте на любой адрес электронной почты. Я могу отправить его как вложение, но хочу отправить как ссылку. Является ли это возможным? Я попытался загрузить файл Core Data в NSData, а затем в NSString, но он не работает.
Не знаю, если это важно, но я использую постоянное хранилище с типом хранилища NSBinaryStoreType.

Возможно ли это? И как я могу это сделать?

РЕДАКТИРОВАТЬ: ОК. Я пробую это с приложением. Сначала я зарегистрировал тип файла, но в электронном письме файл отображается с вопросительным знаком, и я не могу его открыть. Я прикрепляю свой файл так:

NSData *archievedData = [NSKeyedArchiver archivedDataWithRootObject:[NSString stringWithContentsOfFile:path encoding:NSISOLatin1StringEncoding error:nil]];
[mailViewController addAttachmentData:archievedData mimeType:@"application/icollege" fileName:@"iCollege.ccd"];    

Это мой Info.plist:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeMIMETypes</key>
        <array>
            <string>application/icollege</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>iCollege Backup Document</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.fischer.ccd</string>
        </array>
    </dict>
</array>
...
<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>iCollege Backup Document</string>
        <key>UTTypeIdentifier</key>
        <string>com.fischer.iCollege</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>ccd</string>
            </array>
            <key>public.mime-type</key>
            <string>application/icollege</string>
        </dict>
    </dict>
</array>

1 Ответ

1 голос
/ 11 апреля 2011

Невозможно создать ссылку, которая ссылается на конкретный экземпляр приложения на определенном устройстве, если приложение не использует http-сервер.Даже тогда это будет работать только в локальной сети.

Если вы просто хотите сделать резервную копию файла, лучше всего отправить сам файл постоянного хранилища в качестве вложения.Позже вы можете загрузить файл обратно в приложение и снова открыть его.Если вы хотите сохранить данные в удобочитаемом формате, вы должны прикрепить метод к вашим подклассам управляемого объекта для ваших сущностей, который будет генерировать удобочитаемое текстовое описание каждого объекта.Вы также можете настроить этот текстовый формат по мере необходимости, чтобы сделать его значимым для пользователя.

Однако для резервного копирования вы должны полагаться на пользователя, синхронизирующего приложение.Большинство приложений не предоставляют никаких настраиваемых функций резервного копирования, и пользователь, вероятно, даже не подумает искать их, если потеряет данные.

...