Sdílet prostřednictvím


Použití dat v aplikaci pro iOS

Ukázka DataAccess_Adv ukazuje funkční aplikaci, která umožňuje uživatelské vstupy a funkce databáze CRUD (vytvoření, čtení, aktualizace a odstranění). Aplikace se skládá ze dvou obrazovek: seznamu a formuláře pro zadávání dat. Veškerý kód pro přístup k datům je v iOSu a Androidu opakovaně použitelný beze změny.

Po přidání některých dat vypadají obrazovky aplikací v iOSu takto:

iOS sample list

iOS sample detail

Projekt pro iOS je uvedený níže – kód uvedený v této části je obsažený v adresáři Orm :

iOS project tree

Nativní kód uživatelského rozhraní pro ViewControllers v iOSu je mimo rozsah pro tento dokument. Další informace o ovládacíchprvch

Čteno

V ukázce je několik operací čtení:

  • Čtení seznamu
  • Čtení jednotlivých záznamů

Dvě metody ve StockDatabase třídě jsou:

public IEnumerable<Stock> GetStocks ()
{
    lock (locker) {
        return (from i in Table<Stock> () select i).ToList ();
    }
}
public Stock GetStock (int id)
{
    lock (locker) {
        return Table<Stock>().FirstOrDefault(x => x.Id == id);
    }
}

iOS vykresluje data odlišně jako UITableView.

Vytvořit nebo aktualizovat

Pro zjednodušení kódu aplikace je k dispozici jedna metoda uložení, která provádí Insert nebo Update v závislosti na tom, zda Byl nastaven PrimaryKey. Vzhledem k tomu, že Id vlastnost je označena atributem [PrimaryKey] , neměli byste ji v kódu nastavit. Tato metoda zjistí, jestli byla hodnota uložena dříve (kontrolou vlastnosti primárního klíče) a buď vložte nebo aktualizujte objekt odpovídajícím způsobem:

public int SaveStock (Stock item)
{
    lock (locker) {
        if (item.Id != 0) {
            Update (item);
            return item.Id;
    } else {
            return Insert (item);
        }
    }
}

Skutečné aplikace obvykle vyžadují určité ověření (například požadovaná pole, minimální délky nebo jiná obchodní pravidla). Vhodné multiplatformní aplikace implementují co nejvíce logické ověřování ve sdíleném kódu a předávají chyby ověřování zpět do uživatelského rozhraní pro zobrazení podle možností platformy.

Odstranění

Insert Na rozdíl od metod a Update metod Delete<T> může metoda přijímat pouze hodnotu primárního klíče, nikoli kompletní Stock objekt. V tomto příkladu Stock je objekt předán do metody, ale pouze ID vlastnost je předána metodě Delete<T> .

public int DeleteStock(Stock stock)
{
    lock (locker) {
        return Delete<Stock> (stock.Id);
    }
}

Použití předem vyplněného databázového souboru SQLite

Některé aplikace jsou dodávány s databází, která je již naplněna daty. V mobilní aplikaci toho můžete snadno dosáhnout odesláním existujícího databázového souboru SQLite do aplikace a jeho zkopírováním do zapisovatelného adresáře před přístupem k ní. Vzhledem k tomu, že SQLite je standardní formát souborů, který se používá na mnoha platformách, je k dispozici celá řada nástrojů pro vytvoření souboru databáze SQLite:

  • SQLite Manager Firefox Rozšíření – Pracuje na Macu a Windows a vytváří soubory, které jsou kompatibilní s iOS a Androidem.
  • Příkazový řádek – viz www.sqlite.org/sqlite.html .

Při vytváření databázového souboru pro distribuci s vaší aplikací dbejte na pojmenování tabulek a sloupců, abyste měli jistotu, že odpovídají očekávanému kódu, zejména pokud používáte SQLite.NET, které budou očekávat názvy odpovídající vašim třídám a vlastnostem jazyka C# (nebo přidruženým vlastním atributům).

V iOSu zahrňte do aplikace soubor sqlite a ujistěte se, že je označený akcí sestavení: Obsah. Před voláním datových metod umístěte kód FinishedLaunching do souboru pro zkopírování souboru do zapisovatelného adresáře. Následující kód zkopíruje existující databázi s názvem data.sqlite, pouze pokud ještě neexistuje.

// Copy the database across (if it doesn't exist)
var appdir = NSBundle.MainBundle.ResourcePath;
var seedFile = Path.Combine (appdir, "data.sqlite");
if (!File.Exists (Database.DatabaseFilePath))
{
  File.Copy (seedFile, Database.DatabaseFilePath);
}

Jakýkoli kód přístupu k datům (bez ohledu na to, jestli ADO.NET nebo používá SQLite.NET), který se spustí po dokončení, bude mít přístup k předem vyplněným datům.