예제 #1
0
        private string ConvertAddressDictionaryToFullAddress(NSDictionary addressDictionary)
        {
            var addressLines = (NSArray)NSArray.FromObject(addressDictionary.ValueForKey(new NSString("FormattedAddressLines")));

            var arr = new List <string>();

            for (uint i = 0; i < addressLines.Count; i++)
            {
                var o = ObjCRuntime.Runtime.GetNSObject(addressLines.ValueAt(i));
                arr.Add(o.ToString());
            }
            return(string.Join(", ", arr.ToArray()));
        }
        public void Delete(IEnumerable <Item <T> > itemsToDelete, Action <DeleteResult <T> > completionHandler)
        {
            if (IsDeletionInProgress)
            {
                return;
            }

            IsDeletionInProgress = true;

            IList <Item <T> > deletedItems = new List <Item <T> >();
            IList <Item <T> > itemsNotDeletedDueToFailure = new List <Item <T> >();


            DispatchQueue.DefaultGlobalQueue.DispatchAsync(() =>
            {
                foreach (var item in itemsToDelete)
                {
                    try
                    {
                        NSError error;
                        _fileManager.Remove(item.Url, out error);
                        deletedItems.Add(item);
                    }
                    catch (Exception e)
                    {
                        itemsNotDeletedDueToFailure.Add(item);
                    }
                }
            });

            DispatchQueue.MainQueue.DispatchAsync(() =>
            {
                if (deletedItems.Count > 0)
                {
                    NSNotificationCenter.DefaultCenter.PostNotification(NSNotification.FromName("ItemsDeleted",
                                                                                                NSArray.FromObject(deletedItems.ToArray())));
                }
                IsDeletionInProgress = false;
                var deleteResult     = new DeleteResult <T>
                {
                    NotRemovedItems = itemsNotDeletedDueToFailure,
                    RemovedItems    = deletedItems
                };
                if (itemsNotDeletedDueToFailure.Any())
                {
                    deleteResult.ErrorMessage = "Failed to remove " + itemsNotDeletedDueToFailure.Count + " items";
                }
                completionHandler?.Invoke(deleteResult);
            });
        }