Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在不同应用程序之间共享iOS上的文件_C#_Ios_Xamarin.ios_Uipasteboard - Fatal编程技术网

C# 在不同应用程序之间共享iOS上的文件

C# 在不同应用程序之间共享iOS上的文件,c#,ios,xamarin.ios,uipasteboard,C#,Ios,Xamarin.ios,Uipasteboard,我想为iOS上的不同应用程序创建一个可重用类库,我们称它们为: com.developer1.appname(App1) com.developer2.appname(App2) 我的第一个目标是让他们共享一些数据。 App1创建一些数据并保存信息。 App2加载数据并将其用于进一步处理 我已经读过一些东西,发现可以将我的对象数据写入图像或联系人中 现在,我正面临着通用粘贴板的到来。 但是,大约一小时后,在粘贴板中再也找不到我的对象(尽管它应该是持久的) 用于存储到粘贴板中的代码: part

我想为iOS上的不同应用程序创建一个可重用类库,我们称它们为:

  • com.developer1.appname(App1)
  • com.developer2.appname(App2)
我的第一个目标是让他们共享一些数据。 App1创建一些数据并保存信息。 App2加载数据并将其用于进一步处理

我已经读过一些东西,发现可以将我的对象数据写入图像或联系人中

现在,我正面临着通用粘贴板的到来。 但是,大约一小时后,在粘贴板中再也找不到我的对象(尽管它应该是持久的)

用于存储到粘贴板中的代码:

partial void Testbutton_TouchUpInside(UIButton sender)
    {
        var pasteboard = UIPasteboard.General;

        //Create Data
        // 4 * 1 MB
        IEnumerable<int> idata = Enumerable.Range(0, 1024);
        int[] iarray = idata.ToArray();
        byte[] data = new byte[1+iarray.Length * sizeof(int)];
        Buffer.BlockCopy(iarray, 0, data, 1, data.Length-1);
        data[0] = counter++;

        NSData nsd = NSData.FromArray(data);

        // insert to pasteboard
        //pasteboard.SetData(nsd, "mydata");

        // nach etwa 1h ist es weg
        pasteboard.SetItemProviders(new NSItemProvider[] {new NSItemProvider(nsd, key)},false,NSDate.DistantFuture); 


        testlabel.Text = "Inserted Data to Pasteboard";
    }
有人能告诉我在这种情况下删除对象的原因吗,或者在来自不同开发人员的两个应用程序之间共享对象(通常是ByteArray)的好方法是什么。
提前感谢。

Pasteboard由用户控制,而不是应用程序。如果用户选择复制和粘贴,这很好,但应用程序不应在没有用户交互的情况下执行此操作感谢您的回复,您建议采用什么方法在不同的应用程序(来自不同的开发人员/团队)之间正确共享文件。CustomURLscheme可能会工作,但App2会请求数据,App1会到达前台。之后,App1必须为App2调用一个URL,以使App2返回前台。
partial void Testbutton2_TouchUpInside(UIButton sender)
    {
        var pasteboard = UIPasteboard.General;
        bool contains = pasteboard.Contains(new[] { key });
        if(contains)
        {
            testlabel2.Text = $"Contains {key}";

            var data = pasteboard.DataForPasteboardType(key);
            var dataBytes = new byte[data.Length];
            System.Runtime.InteropServices.Marshal.Copy(data.Bytes, dataBytes, 0, Convert.ToInt32(data.Length));

            int[] ints = new int[(dataBytes.Length-1)/4];
            Buffer.BlockCopy(dataBytes, 1, ints, 0, dataBytes.Length - 1);
            testlabel.Text = "Loaded " + dataBytes.Length + " bytes";
            //testlabel2.Text += "Data = {"+dataBytes[0]+","+String.Join(", ", ints) +"}";

            StringBuilder sb = new StringBuilder(1024 );
            sb.Append("Data = {" + dataBytes[0]);
            foreach (var i1 in ints)
            {
                sb.Append($", {i1.ToString()}");
            }
            testlabel2.Text = sb.ToString() + "}";
            int i = 123;
        }
        else
        {
            testlabel2.Text = $"Contains NOT {key}";
        }
    }