iOS開發之Realm資料庫的簡單使用

2021-08-28 02:15:22 字數 3369 閱讀 2390

1.安裝

如果使用cocoapods,示例語句如下

platform :ios, '8.0'

target 'simona_realm' do

pod 'realm', '~> 3.0.0-beta.3'

end

2.建立簡易模型,繼承於rlmobject,儲存在資料庫的模型都需要繼承於rlmobject

person.h

#import

rlm_array_type(person);

@inte***ce

person : rlmobject

@property

nsstring *personid;

@property

bool status;

@property

nsstring ****;

@end

person.m

#import "person.h"

@implementation

person

// 設定主鍵,確保資料唯一性

+ (nsstring *)primarykey

// 設定屬性不為nil

+ (nsarray

*)requiredproperties

// 設定忽略屬性

+ (nsarray

*)ignoredproperties

// 設定預設值,對於不為null的屬性,預設給空

+ (nsdictionary *)defaultpropertyvalues ;

}//索引屬性,主要用於搜尋,根據性別進行搜尋

+ (nsarray

*)indexedproperties

@end

關於rlmobject

1.realm忽略了oc的屬性特性(如nonatomic, atomic, strong,retain, weak,copy等),所以在宣告屬性時可不寫,,這些特性會一直生效直到被寫入資料庫。

2.realm支援以下的型別bool, nsinteger, long, double, cgfloat, nsstring, nsdate, nsdata

3.定義了rlm_array_type(person)表示支援rlmarray屬性,相當於允許rlmarray屬性的使用,例如:在其他屬性裡可@property rlmarray*personal如此使用,相當於繼承關係(本文暫不做贅述)

3.使用

<1.>儲存

模擬儲存一萬條假資料 

rlmrealm *realm = [rlmrealm defaultrealm];

[realm transactionwithblock:^

}];

這裡的

[realm transactionwithblock:^];

等同於

[realm beginwritetransaction];

[realm commitwritetransaction];

每次開啟關閉資料庫時都應執行此操作

<2.>刪除
rlmrealm *realm =[rlmrealm defaultrealm];

[realm beginwritetransaction];

[realm deleteallobjects];

[realm commitwritetransaction];

<3.>查詢
1.根據謂詞查詢

// rlmresults相當於查詢到的陣列

nspredicate *pred = [nspredicate predicatewithformat:@"status = %ld

", no];

rlmresults *result = [person objectswithpredicate:pred];

person *per = result[indexpath.row];

2.根據條件查詢

rlmresults *result = [person objectswhere:@"status = 'no' and personid beginswith '張1'"];

person *per = result[indexpath.row];

3.查詢所有

rlmresults *persons = [person allobjects];

person *per = persons[indexpath.row];

<4.>更新
1.更新資料裡某一屬性值

nspredicate *pred = [nspredicate predicatewithformat:@"personid = %@", strscan];

rlmresults *result = [person objectswithpredicate:pred];

if (result.count != 0)

2.建立乙個新值並更新資料庫,createorupdateinrealm:通過主鍵來更新插入

nspredicate *pred = [nspredicate predicatewithformat:@"personid = %@", strscan];

rlmresults *result = [person objectswithpredicate:pred];

if (result.count != 0) {

person *person = [[person alloc]init];

person.personid = @"simona1"

; person.*** = @"woman"

; person.status = no;

rlmrealm *r = [rlmrealm defaultrealm];

[r beginwritetransaction];

[person createorupdateinrealm:r withvalue:person];

[r commitwritetransaction];

iOS開發之Realm資料庫的簡單使用

1.安裝 如果使用cocoapods,示例語句如下 platform ios,8.0 target simona realm do pod realm 3.0.0 beta.3 end 2.建立簡易模型,繼承於rlmobject,儲存在資料庫的模型都需要繼承於rlmobjectperson.h im...

資料儲存之Realm資料庫

realm官網 realm速度 比 sqlite 和 core data 更好更快的資料庫支援 realm範圍 支援 ios swift 和 objective c 語言都支援 和 android realm我喜歡的原因 相對於fmdb等資料庫,realm讀取資料非常快,可構建大型應用,語言通俗易懂...

iOS 基於Realm資料庫的記賬軟體 前言

筆者在今年畢業的時候,為了應付學校的畢業設計,因此做了一款基於realm資料庫的記賬軟體。現在畢業後,稍微閒下來了,所以打算將整個專案的核心實現步驟記錄下來,供大家學習學習。當然,專案中肯定還存在著大大小小的bug,例如資料的溢位等細節處理。那麼先讓大家看看專案的效果圖吧 時間線布局 記錄介面 錢包...