如何在iOS pasteboard中获取数据以保持多重访问

如何在iOS pasteboard中获取数据以保持多重访问,ios,nsstring,nsdata,uipasteboard,pasteboard,Ios,Nsstring,Nsdata,Uipasteboard,Pasteboard,我现在想做的是,我有两个应用程序,根据是否安装了另一个应用程序,以某种方式运行。我发现了用于应用程序间通信的粘贴板,所以我认为我应该使用它们。问题是,这两个应用程序都是这样做的 UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:@"com.company.app.key" create:YES]; [pasteboard setPersistent:YES]; NSData *data = [pasteboard dataFo

我现在想做的是,我有两个应用程序,根据是否安装了另一个应用程序,以某种方式运行。我发现了用于应用程序间通信的粘贴板,所以我认为我应该使用它们。问题是,这两个应用程序都是这样做的

UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:@"com.company.app.key" create:YES];
[pasteboard setPersistent:YES];
NSData *data = [pasteboard dataForPasteboardType:@"com.company.otherapp"];
if(data != nil)
{
     // Do stuff
}
NSData *selfKey = [pasteboard dataForPasteboardType:@"com.company.thisapp"];
if(data == nil)
{
     [pasteboard setValue:@"string" forPasteboardType:@"com.company.thisapp"];
}
因此,我安装了一个应用程序并运行了另一个应用程序,第一次运行时,数据不是零,如果我使用带有NSData的NSString初始值设定项将NSData转换为NSString,我将读取“string”

问题是,我所做的只是关闭第二个应用程序,再次运行它,突然数据为零。一开始我以为在我访问它之后,粘贴板会删除它,所以我在//Do stuff中添加了下面一行

[pasteboard setValue@"string" forPasteboardType:@"com.company.otherapp"];
如果我第二次运行应用程序,Nope数据仍然为零。我需要字符串永远留在粘贴板中,因为我只需要告诉我是否安装了其他应用程序,所以有人知道为什么只有运行1次后数据才会返回零吗

我必须注意,我所做的只是按下home(主页)按钮,然后再次运行应用程序, 所以情况是这样的

-运行app1

-运行app2(从粘贴板获取数据)

-按主页按钮


-运行app2(数据现在为零)

加载粘贴板时,应将其设置为持久。在上面代码的第一行之后,添加:

pasteboard.persistent = YES;

所以我明白了为什么app2不能再次看到它。setValue:forPasteboardType的作用是覆盖粘贴板中的第一项。所以每次我运行我的应用程序时,它们都会在粘贴板上覆盖彼此的密钥


解决方案是使用类的多个粘贴板项来搜索粘贴板类型的索引,并从中获取数据。

哦,是的,我忘了添加它,我正在将其设置为“持久”,我将编辑它。