Here is a solution that works in iOS 17:
import SwiftUI
struct TimerTransitionView: View {
var body: some View {
Text(Date(timeIntervalSince1970: 1696563619), style: .timer)
.contentTransition(.numericText())
.transaction { t in
t.animation = .default
}
}
}
#Preview {
TimerTransitionView()
}
Thanks LiYanan04818 for the suggestion!
Post
Replies
Boosts
Views
Activity
I tried it on Xcode Version 15.0 beta 8 (15A5229m) but it does not seem to be working.
My text is not animated in the app (not a widget). Do you have any idea why?
In their sample project Sharing Core Data objects between iCloud users, Apple now covers this situation. They added some code to handle the soft deletion of objects that are duplicates. To do so, they added a deduplicatedDate property on the Tag entity, then only remove the objects after some time. See the file PersistenceController+Deduplicate.swift. They also have to filter these objects marked as deduplicated from the UI (like in the TaggingView.swift).
I have the same question! I filled a feedback FB12189714 if you want to reference it.
Hopefully added in the next version and introduced at WWDC 23.
Have you found an answer to your question? I have the same and I am not sure how to limit from A to A' then run some code before running the migration from A' to A". Should we specify the model version for the step to execute, then run some logic, then redo the same for another model version?
Thanks! Sounds to answer my question. I'll make sure to add the #if DEBUG to my preview providers in packages that don't use any assets (and in the app too). I didn't know this could be used in packages too (where is the compiler flag defined for the package, like it is for a project with Active Compilation Conditions?).
For the packages that need assets, I'm not sure I correctly understand:
For your debug build, build this new root package from #2. And for the release build, build just the original package.
Can you tell me how to use either the package from #2 or the original package in the app?
In the app target, I have to import the packages needed. Do I have to create a new app target so I can import either package from #2 or the original package?
Thanks! I added the compiler directives as the error suggests and I can now export localisations.
I'll have a look hat the Swift package evolutions to better understand what platforms mean.
I'm observing the same thing on an iPhone XS Max running iOS 16.1 (beta 4). I've checked many times the configuration of my app and of the CLLocationManager. It should always receive updates but sometimes, it stops. When I put the app back into foreground, the updates are received again (the app was not killed). I've not found any pattern: sometimes it happens after 5 minutes, sometimes half an hour or more. It's happening with Low Power Mode enabled and disabled.
Have you found a solution?
I'm observing the same thing on an iPhone XS Max running iOS 16.1 (beta 4). I've checked many times the configuration of my app and of the CLLocationManager. It should always receive updates but sometimes, it stops. When I put the app back into foreground, the updates are received again (the app was not killed). I've not found any pattern: sometimes it happens after 5 minutes, sometimes half an hour or more. It's happening with Low Power Mode enabled and disabled.
Have anyone found a solution?
My previous code was not functional (edited in this forum without compiling), but the problem is the same (the correct configuration provided below was used during my tests).
class LocationDataManager: NSObject, CLLocationManagerDelegate {
private let locationManager: CLLocationManager = CLLocationManager()
var activityType: CLActivityType = .automotiveNavigation {
didSet {
locationManager.activityType = activityType
}
}
var desiredAccuracy: CLLocationAccuracy = kCLLocationAccuracyBestForNavigation {
didSet {
locationManager.desiredAccuracy = desiredAccuracy
}
}
var pausesLocationUpdatesAutomatically: Bool = false {
didSet {
locationManager.pausesLocationUpdatesAutomatically = pausesLocationUpdatesAutomatically
}
}
var distanceFilter: CLLocationDistance = kCLDistanceFilterNone {
didSet {
locationManager.distanceFilter = distanceFilter
}
}
override init() {
super.init()
locationManager.delegate = self
locationManager.activityType = .automotiveNavigation // controlled by the Picker
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation // controlled by the Picker
locationManager.pausesLocationUpdatesAutomatically = false // controlled by the Toggle
locationManager.distanceFilter = kCLDistanceFilterNone // controlled by the Picker
locationManager.allowsBackgroundLocationUpdates = true
}
func start() {
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
}
func stop() {
locationManager.stopUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print(error)
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print(locations.last)
}
func locationManagerDidPauseLocationUpdates(_ manager: CLLocationManager) {
print(#function)
}
func locationManagerDidResumeLocationUpdates(_ manager: CLLocationManager) {
print(#function)
}
}
I include some basic code to better illustrate how the CLLocationManager is configured and used.
class LocationDataManager: NSObject, CLLocationManagerDelegate {
private let locationManager: CLLocationManager
var activityType: CLActivityType = .automotiveNavigation {
didSet {
locationManager.activityType = activityType
}
}
var desiredAccuracy: CLLocationAccuracy = kCLLocationAccuracyBestForNavigation {
didSet {
locationManager.desiredAccuracy = desiredAccuracy
}
}
var pausesLocationUpdatesAutomatically: Bool = false {
didSet {
locationManager.pausesLocationUpdatesAutomatically = pausesLocationUpdatesAutomatically
}
}
var distanceFilter: CLLocationDistance = kCLDistanceFilterNone {
didSet {
locationManager.distanceFilter = distanceFilter
}
}
init() {
locationManager = CLLocationManager()
locationManager.activityType = .automotiveNavigation // controlled by the Picker
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation // controlled by the Picker
locationManager.pausesLocationUpdatesAutomatically = false // controlled by the Toggle
locationManager.distanceFilter = kCLDistanceFilterNone // controlled by the Picker
locationManager.allowsBackgroundLocationUpdates = true
}
func start() {
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
}
func stop() {
locationManager.stopUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print(error)
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print(locations.last)
}
func locationManagerDidPauseLocationUpdates(_ manager: CLLocationManager) {
print(#function)
}
func locationManagerDidResumeLocationUpdates(_ manager: CLLocationManager) {
print(#function)
}
}
In a project using Core Data where I pass multiple objects to the navigationDestination (see example below), I'm seeing a lot of "Update NavigationAuthority possible destinations tried to update multiple times per frame." when I navigate in the Stack. After few push and pop in the stack, the app freezes, the memory increases, the CPU runs at 100%, then the app crashes. I checked the logs from my device: the issues are different every time, but it seems to be linked to a UI update.
.navigationDestination(for: Paragraph.self) { paragraph in
ParagraphDetail(
post: post,
paragraph: paragraph) // -> Update NavigationAuthority possible destinations tried to update multiple times per frame.
}
In a NavigationStack where I only pass one object in the navigationDestination (see below), I don't have this log message, and the app never freezes.
.navigationDestination(for: Paragraph.self) { paragraph in
ParagraphDetailOnlyParagraph(paragraph: paragraph)
}
To identify if it's related to Core Data or not, I reproduced the same NavigationStack with plain Structs, or simple Class objects. I don't see the log message, even when I pass multiple objects to the navigationDestination. The app never freezes.
I'll file a FB. It seems to be a bug in beta 1.
I do have the same issues but haven’t found the solution yet. It seems to be related to FetchRequest. Are you using Core Data in your app?
Feedback sent: FB9825000
Thanks for your answer.
I’m observing the same behaviour in the sandbox environment. Here are the steps I've done if that helps:
I created a Sandbox account in App Store Connect: I cleared the Purchase History for this tester and set the Subscription Renewal Rate to Monthly Renewal Every 3 Minutes.
I created a fake App in App Store Connect.
I configured a subscription group in App Store Connect for this fake app and added a monthly subscription to this subscription group (this monthly subscription is in Ready To Submit stage after I added enough meta data).
I run the app without using the Xcode config file: the product added to the app on App Store Connect is correctly loaded by the app and I can subscribe to it using the sandbox account on a real device.
I leave the app opened and I receive the transactions when the app is running.
I hard quit the app and wait enough time for virtual renewals to normally be created (for example I wait 30 minutes, which should have renewed the app 10 times based on the Sandbox tester account setup for subscription renewal rate).
I launch the app again and fetch the last transaction for this subscription: it's still the one downloaded 30 minutes ago, before the app was quitted.
I fear the behavior is the same in a production environment so I fear I missed anything and don’t want to ship not working subscription management in my app.