Это может быть совсем не то, что вы хотите, но это было хорошее упражнение. Может быть, это поможет.
Позвольте мне перефразировать то, что, по-моему, вы спрашиваете: у вас есть ряд объектов, каждый из которых имеет свойство List типа Int, и вы хотите иметь возможность запрашивать все объекты, для которых есть конкретный тип 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])
Как я уже сказал, он может быть неосновным, но он предоставляет решение более объектно-ориентированным способом.