Post not yet marked as solved
I am facing a similar issue with contacts permission on iOS 17 and iOS 16.4
@Developer Tools Engineer @eskimo FB13635680
Post not yet marked as solved
@sasro I am stuck with the exact same problem.
Did you manage to solve this issue? If so how?
Post not yet marked as solved
Based on my testing if you define inverse relationship then nil comparison works on Xcode Version 15.0 (15A240d)
Post not yet marked as solved
I forgot to add the code for App, any help on this would be much appreciated.
SwiftDataEnumDemoApp
import SwiftUI
import SwiftData
@main
struct SwiftDataEnumDemoApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.modelContainer(for: Car.self)
}
}
}
Post not yet marked as solved
@alexanderwe Has anyone tried using enum inside the Query predicate? For me enum gets saved however doesn't work with Query Refer https://developer.apple.com/forums/thread/737929
Post not yet marked as solved
Given below is my understanding (I could be wrong).
It looks like a concurrency issue.
@Observable does ensure properties are accessed on the main thread, so it is thread safe.
However by accessing a static property containing the AppModel, the AppModel might not longer guarantee thread safety.
Based on the crash it seems like it is caused by simultaneous access (possibly from different threads).
Debug
Turn on Swift Strict Concurrency to complete to spot any warnings thrown by the compiler.
Solution
If you want to pass around the model use @Environment across views and access them across views
If you have different models and need to talk to each other find ways to isolate and protect access using actors.
Post not yet marked as solved
I have created a default SwiftData app by selecting the storage as SwiftData.
The app runs fine on iOS simulator, there is no crash.
I am using Xcode 15 Beta 6.
Do you have any framework that you have added to your project?
Can you clear DerivedData and create a new project and test using Xcode Beta 6?
Post not yet marked as solved
Just curious:
Why do you need a shared static property on AppModel?
Since Folder conforms to identifiable in SidebarView could you just use ForEach(folders) { folder in?
Note: I don't have an iOS 17 device so couldn't test it on real device.
Could you make the above 2 changes mentioned and test it? Just trying to understand what causes the crash?
Based on my experience, using self inside #predicate is not allowed. Do you have unique identifier field for Item?
If so store that then use unique identifier in a variable and then use id inside your #predicate.
Assume name is the unique identifier then use the following code
example:
let id = self.name
let predicate = #predicate { $0.item.name == id }
....
Post not yet marked as solved
Try removing didSet and try it
Try removing private set
One way to isolate the problem is to keep commenting out and simplifying your model till it no longer crashes and then you can isolate the problem.
Then file a feedback with the isolated problem.
Post not yet marked as solved
Not sure this helps, on iOS 17 there is an API called scrollPosition which is an alternate to ScrollViewReader
Refer: https://developer.apple.com/wwdc23/10159
Post not yet marked as solved
Any help or workaround would be much appreciated, I have filed a feedback FB12953838
Post not yet marked as solved
Since @Model is a macro it would do something special (custom logic) for every member property to persist it.
Workaround
Create a struct ItemRecord with the same properties
Populate ItemRecord with Item
Conform ItemRecord to Codable and Transferable
Let the Item have a way to conveniently create ItemRecord
Use ItemRecord to drag and drop or for other transferable functionalities (item.record)
Code
@Model
final class Item {
let createdAt: Date
//For convenience
var record: ItemRecord {
ItemRecord(item: self)
}
init() {
self.createdAt = .now
}
}
struct ItemRecord: Codable, Transferable {
let createdAt: Date
init(item: Item) {
createdAt = item.createdAt
}
static var transferRepresentation: some TransferRepresentation {
CodableRepresentation(contentType: .myCustomType)
}
}
Post not yet marked as solved
@gchiste I have filed a feedback FB12980427 (contains sample code, videos)
I really hope that the bug gets fixed, I have filed it under SwiftUI as CoreTransferable wasn't available in the frameworks list.
Yes, this doesn't work on iOS but works on macOS.
I have tested on iOS 17 beta using Xcode 15 beta 6.
Post not yet marked as solved
On Xcode 15 beta 6, following code compiles fine.
The following code was taken from the Code tab of the https://developer.apple.com/wwdc23/10154
Why do you explicitly mention PersistentModel conformance when @Model already conforms to PersistentModel?
Code (compiles fine)
@Model
final class Card {
var front: String
var back: String
var creationDate: Date
init(front: String, back: String, creationDate: Date = .now) {
self.front = front
self.back = back
self.creationDate = creationDate
}
}
Did you miss