1

实现了统一类型标识符,当通过电子邮件发送单个附件时,stringWithContentsOfURL返回一个NSString包含由NSURL.

从附加了多个文件的电子邮件中选择一个文件时,stringWithContentsOfURL返回所有附加的文件,并带有标题信息,作为NSString.

有没有办法只打开选定的文件?

更新:

  • 第一个文件用户触摸,文件按预期处理。用户可以触摸多次,一切都很好。
  • 任何后续接触的文件,电子邮件的原始来源,减去电子邮件标题,将被保存为由 NSURL 表示的文件。
  • 此行为已在 iphone 6.0.1 和 ipad 5.1.1 上观察到。

您可以解析原始源并确定从 NSURL 中选择了哪个文件,我认为这可能存在问题。

结束更新

代码(两种情况下的 url 都指向一个文件)。文件扩展名为 *.defects

NSString *file = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];

带有单个附件的邮件的结果

"Defect Names"
"Test1 Area"
"Test2 Area"
"Test 3 Area"
"Test 4 Area"
"Extra"

带有多个附件的邮件的结果

--Apple-Mail=_785C0CB9-CB2F-43BE-AD5F-D7DEF5F97EFC
Content-Disposition: attachment;
    filename=Areas.defects
Content-Type: defects/x-defects;
    x-unix-mode=0644;
    name="Areas.defects"
Content-Transfer-Encoding: 7bit

"Area of Defect"
"Test1 Area"
"Test2 Area"
"Test 3 Area"
"Test 4 Area"
"Extra"

--Apple-Mail=_785C0CB9-CB2F-43BE-AD5F-D7DEF5F97EFC
Content-Disposition: attachment;
    filename="pos.defects"
Content-Type: defects/x-defects;
    x-unix-mode=0644;
    name="pos.defects"
Content-Transfer-Encoding: 7bit

"Position of Item"
"Test1 Position"
"Test2 Position"
"Test 3 Position"
"Test 4 Position"
"Extra"

...
--Apple-Mail=_785C0CB9-CB2F-43BE-AD5F-D7DEF5F97EFC--
4

1 回答 1

0

虽然我对这种行为感到惊讶(我原以为只会看到用户点击的附件),但这并不难解决。

您可以轻松编写多部分 MIME 扫描程序,将多部分消息拆分为单独的附件。

您确定您在发送的电子邮件中确实有单独的文件吗?检查原始消息。

此外,您可能错误地设置了您的 UTI 注册,请阅读我的文章:http: //www.cocoanetics.com/2012/09/fun-with-uti/

通常,如果您通过文件打开方式(来自另一个应用程序)打开一个应用程序,您将获得一个文件 URL,该文件 URL 指向接收应用程序的 Document/Inbox 文件夹中所述文件位置的副本。检查此 URL 以查看系统放置在那里的文件类型。如果您不删除它,那么您可以使用 Xcode 管理器将您的应用程序文件夹的内容复制到桌面。

于 2012-12-17T06:39:33.393 回答