Ich habe ein sehr einfaches Modell definiert: < /p>
@Model
final class Movie: Identifiable {
#Index\(\[.name\])
var id = UUID()
var name: String
var genre: String?
init(name: String, genre: String?) {
self.name = name
self.genre = genre
}
}
< /code>
Ich habe SQL-Debugging durch Einbeziehung von '-com.apple.coredata.sqldebug 3' Argument zum Start eingeschaltet. Der folgende Code wählt zunächst 3 Datensätze aus, wählt jedoch auch jeden Datensatz einzeln aus, obwohl ich keine anderen Attribute verweist. < /p>
var fetchDescriptor = FetchDescriptor\()
fetchDescriptor.propertiesToFetch = \[.id, .name\]
fetchDescriptor.fetchLimit = 3
do {
print("SELECT START")
movies = try modelContext.fetch(fetchDescriptor)
print("SELECT END")
} catch {
print("Failed to load Movie model.")
}
< /code>
Hier ist die Debug -Info: < /p>
SELECT START
CoreData: annotation: fetch using NSSQLiteStatement on entity 'Movie' with sql text 'SELECT 1, t0.Z_PK, t0.ZID, t0.ZNAME FROM ZMOVIE t0 LIMIT 3' returned 3 rows with values: (
CoreData: annotation: fetch using NSSQLiteStatement on entity 'Movie' with sql text 'SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZGENRE, t0.ZID, t0.ZNAME FROM ZMOVIE t0 WHERE t0.Z_PK = ? ' returned 1 rows
CoreData: annotation: fetch using NSSQLiteStatement on entity 'Movie' with sql text 'SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZGENRE, t0.ZID, t0.ZNAME FROM ZMOVIE t0 WHERE t0.Z_PK = ? ' returned 1 rows
CoreData: annotation: fetch using NSSQLiteStatement on entity 'Movie' with sql text 'SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZGENRE, t0.ZID, t0.ZNAME FROM ZMOVIE t0 WHERE t0.Z_PK = ? ' returned 1 rows
SELECT END
< /code>
Ich sehe, dass es die 3 Zeilen initialSy auswählt, aber dann alle einzelnen ausgewählt. Warum sollte es dies beim ersten Abruf tun? Ich hatte gehofft, die Daten, die ich anzeigen möchte>
SwiftData PropertieDieStofetch holt nur die angeforderten Attribute ab, aber jeder Datensatz ist voll ausgewählt, auch w ⇐ IOS
-
- Similar Topics
- Replies
- Views
- Last post