如何在iOS中编辑其他应用程序中的文本

时间:2012-05-09 01:18:14

标签: ios lua

我有一个我正在编写的应用程序,其中包含一组嵌入式lua脚本。我希望能够在iPad上编辑脚本 - 这可能吗?

我想到的工作流程是:

  1. 启动我的应用并测试;
  2. 转到iPad上的文本编辑器并更改lua脚本;
  3. 关闭我的应用;
  4. 重启我的应用以重新加载脚本;
  5. 转到1。
  6. 编辑:我可以在我的应用程序中添加“打开”选项并按照this question打开文本文件,但是,一旦我这样做,文本编辑器就会将文件保存回原来的位置?还是仅仅使用副本?这假设我可以找到一个打开lua文件的文本编辑器,我想在某处可以找到一个。

3 个答案:

答案 0 :(得分:1)

作为@danielbeard correctly stated,由于iOS沙盒模型有效地将应用程序数据约束到应用程序本身,因此在桌面(或更宽松的移动设备)操作系统上,这将无法像预期的那样直接工作,尽管值得注意的是问题手头不是沙盒本身,它也存在于较新版本的OS X中,但事实上iOS没有提供将镜像到应用程序沙箱中的统一文件系统层。通过在Lion的TextEdit中编辑桌面上的文本文档,您可以清楚地看到这一点。 TextEdit看到文档位于其沙箱中~/Library/Containers/com.apple.TextEdit/Data/Desktop,但它也明确地保存在您的桌面~/Desktop上 - 同时;出于沙箱的目的,这两个目录都是一个。

Sandbox me once, edit me twice

iOS中不存在跨应用程序文件层。 这意味着在iOS中,无法在多个应用程序中编辑同一个文件的物理副本,因为每个应用程序都需要在自己的沙箱中创建副本。 然而,可以通过iOS 3.2中支持的“Open In”机制将文件从app sandbox“传递”到app sandbox (严格地说:复制它们),如在其他地方打开邮件附件时所见应用

Open me up

如果您的应用程序实现了通过此机制转发其.lua文档的功能,则识别文件类型的任何文本编辑器都可以将副本接收到其自己的沙箱中。我对实现细节很朦胧,不是自己的iOS开发者,但是如果OS X的UTI声明规则和我在使用iDevices时观察到的一些东西都是正确的,你甚至可以将文件类型插入到{{ 1}}您自己的应用中的UTI层次结构,它将为设备上的所有文本编辑器添加对它的支持。

如果接收编辑器也实现了“打开”,并且您的应用已注册为能够编辑public.text文件,则编辑器可以稍后将编辑后的文件复制回应用程序的沙箱。在iOS SDK强加的限制范围内,我发生了什么(重复数据删除,版本控制,覆盖有或没有提示)将取决于你。我不知道。

以下Apple Developer文档可能提供一个有用的起点:

答案 1 :(得分:0)

如果你越狱并安装了OpenSSH,你可以做到这一切以及更多。

我使用Moai开发an SDK for writing games in Lua recently adopted by Double Fine。我可以使用我选择的编辑器(Vim)直接在iPad上编码,通过SSH会话到localhost(使用Prompt,一个iOS SSH客户端)。我映射了一个重启app的热键。使用蓝牙键盘,它就像iPad一样接近笔记本电脑。

您还可以使用ExpandDrive之类的东西将iPad的文件系统映射到桌面文件系统。然后,您可以浏览文件并像在台式机上一样完全无线地编辑它们。您可以在编辑器中映射一个键以通过SSH重新启动应用程序,因此工作流程变为:

  1. 编辑Lua脚本
  2. 按任意键重新启动您的应用并查看更改。

答案 2 :(得分:0)

在没有越狱的情况下,您无法从iOS中的一个应用程序沙箱访问其他应用程序的沙箱。