簡體   English   中英

如何查詢清單 <Int> 在Realm Swift上

[英]How to query List<Int> on Realm Swift

如何過濾具有給定Int的RealmFilter.objectIds?

func delete(ids: [Int]) {
   let filterResultsToDelete = realm.objects(CRMRealmFilterResult.self).filter("ANY objectIds IN %@",ids)
//Crashes
}


class RealmFilterResult : Object {
    @objc dynamic var filterId: Int = 0
    let objectIds = List<Int>()

    override static func primaryKey() -> String {
        return "filterId"
    }
  }

Realm尚不支持查詢基元List (即非Object子類,例如Int )。

您可以在此GitHub問題上關注此狀態。

這可能根本不是您想要的,但這是一個很好的練習。 也許這會有所幫助。

讓我重申一下我想問的問題:您擁有一系列對象,每個對象都具有Int的List屬性,並且您希望能夠查詢列表中具有特定int的所有對象。

使用一個更真實的示例,假設我們有一個團隊列表,並且在每個團隊中保留了一個游戲得分列表(一個列表)

class TeamObject: Object {
    @objc dynamic var object_id = NSUUID().uuidString

    let scoreList = List<ScoreObject>()

    override static func primaryKey() -> String? {
        return "object_id"
    }
}

並且我們有一個得分對象,該得分對象將得分存儲為Int(以及其他詳細信息,例如他們玩的人或日期)

class ScoreObject: Object {
    @objc dynamic var score = 0
    let teamsWithScores = LinkingObjects(fromType: TeamObject.self, property: "scoreList")
}

為了簡單起見,讓我們創建三個得分和兩個團隊,並在列表中給每個團隊兩個得分。

let score1 = ScoreObject()
score1.score = 1
let score2 = ScoreObject()
score2.score = 2
let score3 = ScoreObject()
score3.score = 3

let t1 = TeamObject()
t1.scoreList.append(score1)
t1.scoreList.append(score3)

let t2 = TeamObject()
t2.scoreList.append(score2)
t2.scoreList.append(score3)

並將它們寫入領域

try! realm.write {
    realm.add(t1)
    realm.add(t2)
}

從那里,我們可以獲得得分為1的任何團隊,這解決了獲取具有包含給定int列表的對象的問題。

let results = realm.objects(ScoreObject.self).filter("score IN %@", [1])
if results.count > 0 {
    for aScore in results {
        let teamsWithThisScore = aScore.teamsWithScores
        for team in teamsWithThisScore {
            print("score: \(aScore.score)")
            print("     id: \(team.object_id)")
        }
    }
} else {
    print("no teams with those scores")
}

您可以對此進行擴展以獲取具有多個得分(整數)的團隊(對象)

let results = realm.objects(ScoreObject.self).filter("score IN %@", [1,3])

正如我說的那樣,它可能不是基礎,但它確實以面向對象的方式提供了一種解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM