将核心数据转换为NSString

时间:2011-04-10 11:34:14

标签: email core-data hyperlink backup nsdata

我想在我的应用程序iCollege(App Store)中创建备份功能。数据应通过电子邮件发送到任何电子邮件地址。我可以将它作为附件发送,但我想将其作为链接发送。可能吗?我试图在NSData中加载Core Data文件,然后加载到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 个答案:

答案 0 :(得分:1)

除非应用程序正在运行http服务器,否则无法创建引用特定设备上特定应用程序实例的链接。即使这样,它也只适用于本地网络。

如果您只想备份文件,最好的办法就是将持久存储文件本身作为附件发送。稍后您可以将文件加载回应用程序并重新打开它。如果要以人类可读的格式保留数据,则应为您的托管对象子类附加一个方法,以便为每个对象生成人类可读的文本描述。您还可以根据需要自定义该文本格式,以使其对用户有意义。

但是,对于备份,您应该依赖用户同步应用程序。大多数应用程序不提供任何自定义备份功能,如果用户丢失数据,用户可能甚至不会考虑查找。