Support SwiftData models
I maintainer di solito rispondono entro 3 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 38/100
Direzione di ricerca
Start from JSONSchema.derivedJsonSchema and PropertyValue.init(from:), which uses Mirror on the JSONSchemaConvertible example instance. Reproduce with a SwiftData @Model type and note which synthesized _/$ properties trigger JSONSchemaConvertationError.typeUnsupported. Decide whether to skip those names, otherwise document the limitation; there is no named test file in the issue.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hello all, thanks for the nice project.
Is your feature request related to a problem? Please describe.
JSONSchemaConvertible doesn't work with SwiftData @Model classes. Calling derivedJsonSchema() throws JSONSchemaConvertationError.typeUnsupported at runtime:
@Model
final class DictionaryEntry: Codable {
var input: String = ""
var entries: [Entry] = []
}
extension DictionaryEntry: JSONSchemaConvertible {
static var example: DictionaryEntry { /* ... */ }
}
// Throws typeUnsupported
let schema = JSONSchema.derivedJsonSchema(DictionaryEntry.self)
Describe the solution you'd like
I believe the root cause is that PropertyValue.init(from:) uses Mirror to reflect the example instance. For @Model classes, Mirror sees internal SwiftData properties (injected by the macro) that have unsupported types. Probably the solution could be to filter out properties starting with _ or $, use some enum to determine which properties to include or at least document this limitation.
Describe alternatives you've considered
Creating plain structs that duplicate the model structure:
struct DictionaryEntryDTO: Codable, JSONSchemaConvertible {
let input: String
let entries: [EntryDTO]
static var example: Self { /* ... */ }
}
let schema = JSONSchema.derivedJsonSchema(DictionaryEntryDTO.self)
The above works but I need to maintain duplicate types.
Additional context
- SwiftData
@Modelmacro synthesizes properties for observation/persistence - These are visible to
Mirrorbut not part ofCodable - Tested with v0.4.7
- Lingua principale
- Swift
- Stelle
- 2.9k
- Fork
- 519
- Merge medio
- 4g 9h
- PR unite (30g)
- 13
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di MacPaw/OpenAI
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 3 giorni
-
Enable batch promptsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
MacPaw/OpenAI#73 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
I maintainer di solito rispondono entro 3 giorni
-
Add Batch API supportAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di MacPaw/OpenAI
Issue simili
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
altic-dev/FluidVoice#1117 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
omacom/try-omarchy#343 ·
I maintainer di solito rispondono entro 1 giorno
-
install.ps1: Windows PowerShell 5.1 aborts after a successful cosign verification (NativeCommandError on 'Verified OK')Forse già presa @sly321-pixel l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
OneBusAway/onebusaway-ios#1518 ·
I maintainer di solito rispondono entro 2 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 61/100
vorssaint/vorssaint-utils#3030 ·
I maintainer di solito rispondono entro 1 giorno