在 UIPasteboard 中存储 NSArray

2023-11-29

我有几个文本文件想要在 2 个应用程序之间传输。 (即同一应用程序的免费和付费版本)。

我正在使用 UIPasteboard 来执行此操作。文件的内容作为 NSArray 保存在内存中,因此我想将这些 NSArray 复制到粘贴板(精简版),并从粘贴板(完整版)读取它们。

由于某种原因,无法从粘贴板读回数据。数据作为 NSData 对象返回,而不是 NSArray,我认为这意味着它不是我正在使用的粘贴板类型所需的格式,即“public.utf8-plain-text”。

当我用这种粘贴板类型读/写 NSString 时,它工作得很好。

我搜索了 Apple 文档等,看看是否有不同的类型我应该用于 NSArrays(或其他属性列表对象),但画了一个空白。

写入粘贴板:(下面的pDataOutput是字符串数组,文件内容):

NSMutableArray *lArrayCopy = [gGlobalData.cPasteBoard.items mutableCopy];
[lArrayCopy replaceObjectAtIndex:pDataFileIdx
                  withObject:[NSDictionary dictionaryWithObject:pDataOutput
                                                         forKey:@"public.utf8-plain-text"]];
gGlobalData.cPasteBoard.items = lArrayCopy;
[lArrayCopy release];

从粘贴板上读取:

NSArray *lPBItems = [pPasteBoard valuesForPasteboardType:@"public.utf8-plain-text"
                                               inItemSet:nil];
NSLog(@"PB Items = NSArray of count %d", lPBItems.count);

以上返回:

PB Items = NSArray of count 0

如上所述,如果写为 NSStrings,它会正确地将数据返回为 NSStrings。

任何帮助将非常感激。 谢谢 斯蒂芬·C


我遇到了同样的问题,我认为 valueForPasteboardType 系列方法已损坏并且始终返回 NSData。 这是我的解决方案:

NSArray * lArrayFromPasteBoard = [pPasteBoard valueForPasteboardType:@"com.my.custom.type"];
if ([lArrayFromPasteBoard isKindOf:[NSData class]])
{
    lArrayFromPasteBoard = [[NSPropertyListSerialization propertyListWithData:(NSData*)lArrayFromPasteBoard options:0 format:0 error:0];
}

希望这会成功,这样一旦苹果修复了他们的错误,if中的代码就不会再被调用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 UIPasteboard 中存储 NSArray 的相关文章

随机推荐

  • 'multiprocessing.resource_sharer' 中的 AttributeError 'DupFd' | Python 多处理 + 线程

    我正在尝试在多个人之间进行通信threading Thread s 执行 I O 密集型任务和多个multiprocessing Process es 执行 CPU 密集型任务 每当一个线程为一个进程找到工作时 它就会被放到一个进程上mul
  • 即使设置了操作的优先级和依赖关系,操作队列也不会按顺序执行

    我正在进行三个 api 调用 并希望 API1 应首先执行 完成后应执行 API2 然后执行 API3 我为此使用了操作队列 并添加了对操作的依赖性 我也尝试设置优先级 但没有按顺序调用 api 帮我看看如何正确制作 代码是这样的 let
  • 在组内计算值变化之后和之前的值,为每个唯一的转变生成新变量

    我正在努力计算组内唯一值的出现次数 id 我正在看TF When TF我想从那一点开始向前和向后计算变化 这个计数应该存储在一个新变量中PM 以便PM 同时保留正负每个独特的转变 in TF 根据我收集的信息 我需要使用rle 但我有点卡住
  • 在 C++ 变量声明中使用 struct 关键字

    我有一种感觉 这可能与 C 语法有关 但我是从 C 开始我的编程生活的 所以我不确定 基本上我见过这个 struct tm t memset t 0 sizeof struct tm 我对这种语法有点困惑 因为通常我希望上面的内容看起来像这
  • 无法通过套接字'/tmp/mysql.sock连接到本地MySQL服务器

    当我在测试套件期间尝试连接到本地 MySQL 服务器时 它 失败并出现错误 OperationalError 2002 Can t connect to local MySQL server through socket tmp mysql
  • 滚动 Swift 时 tableView 的值重复

    我有一个 tableView 来显示工作日的时间 在tableView中使用timingsArray来显示计时 timingObj 类型的timingsArray class timingObj var dayNo Int var open
  • 溢出:隐藏在 Safari 中不起作用[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我遇到了一个问题 我不明白 我制作 YouTube 图像的方法是将它们放入一个容
  • Javascript 为警报分配变量

    我想知道你能为警报分配一个变量吗 它的真正含义和作用是什么 例如 var a alert test 我尝试了一下 一旦页面加载 就会弹出警报 其中变量a遗迹 undefined 当我打电话的时候 难道我们不应该让它成为一个匿名函数 里面有警
  • 我可以在一行中将多个对象变暗为整数/变体/等吗?

    在VBA中 我可以Dim以这种简洁的方式将多个对象作为整数放在一行中 或者仅声明d是一个整数 Dim a b c d As Integer 您可以测试 Sub test Dim a b c d As Integer Debug Print
  • 如何通过 WebRequest 调用 MVC 操作并通过 Active Directory 验证请求?

    我知道这个标题很拗口 我已经把大部分事情都准备好了 我只需要确认我是否可以做我正在尝试的事情 我正在使用 ASP NET MVC 3 我有一个应用程序 它具有我像 Web 服务一样使用的控制器 控制器上有一个方法 它返回一个字符串 即 js
  • 如果应用程序进入后台模式,则会触发 Ondisconnect

    我有以下代码 func OnlineStatus userID String handle Auth auth addStateDidChangeListener auth user in if let user user User is
  • 如何使用正则表达式删除Python中的逗号、括号?

    这些是我的文本文件的内容 例如 abc doc data name abc name xyz 在python中打开文件后 如何删除所有括号 引号和逗号 最终输出应该是 data name abc name xyz Use ast liter
  • 在 python 2.7 中导入 nltk 的语法无效

    当我在 python 2 7 CLI 中执行以下代码时 import nltk 它显示以下错误 SyntaxError Invalid Syntax Traceback most recent call last File
  • Android Studio:Drawable 文件夹:如何放置多个 dpi 的图像?

    Hi 根据android文档drawable文件夹需要有多个子目录 用于存放不同dpi的图像 然而 在 Android Studio 中 在可绘制文件夹中创建任何子目录都会导致它根本无法检测到任何图像 另一方面 如果图像直接放置在可绘制文件
  • 多个春季批量作业

    我在 Spring Boot 中使用 Scheduled 注释来触发多个作业 以下是代码片段 EnableBatchProcessing EnableScheduling public class Config extends Defaul
  • Flutter闪屏不全屏android 12

    我正在创建一个带有闪屏的颤振应用程序 我已经用过flutter native splash然而 无论我在manifest xml styles xml和launch background xml中进行什么更改 我都无法让它填满整个屏幕 它以
  • splat over JavaScript 对象(用 new )?

    如何在不使用的情况下跨越对象ECMA6 特点 Attempt function can arg0 arg1 return arg0 arg1 function foo bar haz this bar bar this haz haz my
  • Ruby 1.9.3 用 eval 定义 var

    我正在用 Ruby 编写类似 REPL 的东西 我需要在运行时定义变量 我发现我应该使用 eval 但这里是 irb 会话的摘录来测试它 在 1 9 3 中 这在 1 8 中有效 gt eval a 3 gt 3 gt a gt NameE
  • PHP 比较数组

    无论如何 有没有使用内置函数来比较 php 中的数组 而不需要执行某种循环 a1 array 1 2 3 a2 array 1 2 3 if array are same a1 a2 code here 顺便说一句 数组值并不总是按相同的顺
  • 在 UIPasteboard 中存储 NSArray

    我有几个文本文件想要在 2 个应用程序之间传输 即同一应用程序的免费和付费版本 我正在使用 UIPasteboard 来执行此操作 文件的内容作为 NSArray 保存在内存中 因此我想将这些 NSArray 复制到粘贴板 精简版 并从粘贴