如何在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的作用是覆盖粘贴板中的第一项。所以每次我运行我的应用程序时,它们都会在粘贴板上覆盖彼此的密钥
解决方案是使用类的多个粘贴板项来搜索粘贴板类型的索引,并从中获取数据。哦,是的,我忘了添加它,我正在将其设置为“持久”,我将编辑它。