Я хочу создать повторно используемую библиотеку классов для различных приложений на iOS, назовем их:
- com.developer1.appname (App1)
- com.developer2.appname (App2)
Моя первая цель - дать им возможность поделиться некоторыми данными.Приложение 1 создает некоторые данные и сохраняет информацию.App2 загружает данные и использует их для дальнейшей обработки.
Я уже прочитал способы обмена на ios и где-то нашел, что можно было бы записать данные моего объекта в изображения или контакты.
Прямо сейчас я сталкиваюсь с приближением Главного картона.Однако после ок.Один час мой объект больше не может быть найден в картоне (хотя он должен быть постоянным см. )
Код для хранения в картоне:
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";
}
код длячтение элемента:
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}";
}
}
Может кто-нибудь сказать мне, почему объект удаляется в этом случае, или какой был бы хороший способ поделиться объектами (обычно байтами) между двумя приложениями от разных разработчиков.Заранее спасибо.