在iOS和SwiftUI中使用Supabase
学习如何创建Supabase项目,向数据库添加示例数据,以及从iOS应用中查询数据。
1
创建一个Supabase项目
前往 database.new 并创建一个新的Supabase项目。
当您的项目启动并运行后,前往 表编辑器,创建一个新表并插入一些数据。
或者,您可以在项目的 SQL编辑器 中运行以下代码片段。这将创建一个包含一些示例数据的 instruments
表。
12345678910111213-- 创建表create table instruments ( id bigint primary key generated always as identity, name text not null);-- 向表中插入一些示例数据insert into instruments (name)values ('violin'), ('viola'), ('cello');alter table instruments enable row level security;
通过添加RLS策略,使表中的数据可公开读取:
1234create policy "public can read instruments"on public.instrumentsfor select to anonusing (true);
2
使用Xcode创建iOS SwiftUI应用
打开Xcode > 新建项目 > iOS > App。如果已有可运行的应用,可跳过此步骤。
4
初始化Supabase客户端
新建Supabase.swift
文件,使用您的项目URL和公共API(anon)密钥创建Supabase实例:
Project URL
Anon key
Supabase.swift
123456import Supabaselet supabase = SupabaseClient( supabaseURL: URL(string: "YOUR_SUPABASE_URL")!, supabaseKey: "YOUR_SUPABASE_ANON_KEY")
5
创建乐器数据模型
创建一个可解码结构体来反序列化数据库中的数据。
将以下代码添加到名为Instrument.swift
的新文件中。
Supabase.swift
1234struct Instrument: Decodable, Identifiable { let id: Int let name: String}
6
从应用查询数据
使用task
从数据库获取数据,并通过List
显示。
用以下代码替换默认的ContentView
。
ContentView.swift
12345678910111213141516171819202122struct ContentView: View { @State var instruments: [Instrument] = [] var body: some View { List(instruments) { instrument in Text(instrument.name) } .overlay { if instruments.isEmpty { ProgressView() } } .task { do { instruments = try await supabase.from("instruments").select().execute().value } catch { dump(error) } } }}
7
启动应用
在Xcode中按Cmd + R
在模拟器或物理设备上运行应用。