我想在我的应用程序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>
答案 0 :(得分:1)
除非应用程序正在运行http服务器,否则无法创建引用特定设备上特定应用程序实例的链接。即使这样,它也只适用于本地网络。
如果您只想备份文件,最好的办法就是将持久存储文件本身作为附件发送。稍后您可以将文件加载回应用程序并重新打开它。如果要以人类可读的格式保留数据,则应为您的托管对象子类附加一个方法,以便为每个对象生成人类可读的文本描述。您还可以根据需要自定义该文本格式,以使其对用户有意义。
但是,对于备份,您应该依赖用户同步应用程序。大多数应用程序不提供任何自定义备份功能,如果用户丢失数据,用户可能甚至不会考虑查找。