当我将代码从 SQLite 数据库移植到 Core Data 时遇到了问题。
我使用的数据来自现有数据库,因此所有关系都使用每个表的 ID(或现在我使用 Core Data 的实体)定义。我的问题是我想查询单个表,然后使用该结果向上传播数据以获取我需要的所有其他数据。
原始数据库如下所示:
CREATE TABLE TecAccessPoints (MAC varchar NOT NULL PRIMARY KEY UNIQUE,ZoneID integer NOT NULL,Floor integer);
CREATE TABLE Zones (ID integer NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,ZoneName varchar NOT NULL,BuildingID integer,ZoneDescription varchar);
CREATE TABLE Buildings (ID integer NOT NULL PRIMARY KEY AUTOINCREMENT,BuildingName varchar NOT NULL,CampusID integer NOT NULL,BuildingDescription varchar,Long float,Lat float);
CREATE TABLE Campuses (ID integer NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,CampusName varchar NOT NULL,CampusDescription text, Latitude float, Longitude float);
我原来的 SQL 查询是:
SELECT DISTINCT Zones.ID, Zones.ZoneName, Buildings.ID, Buildings.BuildingName, Campuses.ID, Campuses.CampusName, Rooms.ID, Rooms.NameNumber, Rooms.Floor
FROM Zones, TecAccessPoints, Buildings, Campuses, Rooms
WHERE Campuses.ID = Buildings.CampusID
AND Buildings.ID = Zones.BuildingID
AND Zones.ID = Rooms.ZoneID
AND Zones.ID = TecAccessPoints.ZoneID
AND TecAccessPoints.MAC = '%@';
有什么方法可以使用 NSPredicate (或类似的东西)复制这个查询,还是我必须首先执行查找
TecAccessPoints.MAC == '%@'
然后使用返回的数据对数据进行另一次查找,例如:
Zones.ID == TecAccessPoints.ZoneID
依此类推,直到我得到我需要的所有结果?
谢谢
詹姆士