Hi everyone!
I'm seeking help to understand crashes that, as I can see, come from the widget extension.
The brief stack trace that I can see under Xcode -> Window -> Organizer -> [My App] -> Crashes is pretty short (see attachment).
My widgets do fetch request to Core Data, but the operation is performed on the background thread and data is lightweight.
I have been debugging for days, but haven't found any weak code blocks that might take too much memory or crash due to simple language issues.
Will appreciate any help!
In the crash report file, I see the following logs (highlight a few of them due to lines limit):
Incident Identifier: 62A28083-43EE-47F2-A2E0-89A1FA89744A
Hardware Model: iPhone13,2
Process: MyAppWidgetsExtension [28359]
Identifier: MyAppWidgets
Version: 2.16.0 (290)
OS Version: iPhone OS 17.4.1 (21E236)
Exception Type: EXC_CRASH (SIGKILL)
Termination Reason: RUNNINGBOARD 0xdead10cc
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x00000001e05c5af8 mach_msg2_trap + 8 (:-1)
1 libsystem_kernel.dylib 0x00000001e05c5890 mach_msg2_internal + 80 (mach_msg.c:201)
2 libsystem_kernel.dylib 0x00000001e05c57a8 mach_msg_overwrite + 436 (mach_msg.c:0)
3 libsystem_kernel.dylib 0x00000001e05c55e8 mach_msg + 24 (mach_msg.c:323)
4 CoreFoundation 0x00000001980a001c __CFRunLoopServiceMachPort + 160 (CFRunLoop.c:2624)
5 CoreFoundation 0x000000019809df04 __CFRunLoopRun + 1208 (CFRunLoop.c:3007)
6 CoreFoundation 0x000000019809d968 CFRunLoopRunSpecific + 608 (CFRunLoop.c:3420)
7 Foundation 0x0000000196f2c4a8 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212 (NSRunLoop.m:373)
8 Foundation 0x0000000196f2aff0 -[NSRunLoop(NSRunLoop) run] + 64 (NSRunLoop.m:398)
9 libxpc.dylib 0x00000001f40aa26c _xpc_objc_main + 336 (main.m:267)
10 libxpc.dylib 0x00000001f40ac7e4 _xpc_main + 64 (init.c:1294)
11 libxpc.dylib 0x00000001f40ac7a4 xpc_bs_main + 16 (init.c:1310)
12 BoardServices 0x00000001b0d38240 +[BSServicesConfiguration activateXPCService] + 68 (BSServicesConfiguration.m:113)
13 ExtensionFoundation 0x00000001a70bbdf0 -[_EXRunningExtension resume] + 260 (EXRunningExtension.m:298)
14 ExtensionFoundation 0x00000001a70bbc38 -[_EXRunningExtension startWithArguments:count:] + 396 (EXRunningExtension.m:269)
15 ExtensionFoundation 0x00000001a70cfa30 EXExtensionMain + 220 (EXExtensionMain.m:34)
16 Foundation 0x0000000197665ed4 NSExtensionMain + 204 (NSExtensionMain.m:21)
17 dyld 0x00000001bb5bed84 start + 2240 (dyldMain.cpp:1298)
Thread 2:
0 libsystem_kernel.dylib 0x00000001e05d381c guarded_pwrite_np + 8 (:-1)
1 libsqlite3.dylib 0x00000001c1ddc158 seekAndWrite + 456 (sqlite3.c:44255)
2 libsqlite3.dylib 0x00000001c1d95908 unixWrite + 180 (sqlite3.c:44333)
3 libsqlite3.dylib 0x00000001c1de4574 pagerWalFrames + 868 (sqlite3.c:66940)
4 libsqlite3.dylib 0x00000001c1d95628 sqlite3PagerCommitPhaseOne + 316 (sqlite3.c:70256)
5 libsqlite3.dylib 0x00000001c1d85d7c sqlite3BtreeCommitPhaseOne + 172 (sqlite3.c:80934)
6 libsqlite3.dylib 0x00000001c1d85944 vdbeCommit + 1136 (sqlite3.c:93952)
7 libsqlite3.dylib 0x00000001c1d5ec74 sqlite3VdbeHalt + 1352 (sqlite3.c:94362)
8 libsqlite3.dylib 0x00000001c1d7fd04 sqlite3VdbeExec + 42952 (sqlite3.c:103728)
9 libsqlite3.dylib 0x00000001c1d74c80 sqlite3_step + 964 (sqlite3.c:97699)
10 CoreData 0x00000001a01ba0e0 _execute + 128 (NSSQLiteConnection.m:4573)
11 CoreData 0x00000001a01e5510 -[NSSQLiteConnection commitTransaction] + 596 (NSSQLiteConnection.m:3250)
12 CoreData 0x00000001a040aac0 _executeBatchUpdateRequest + 1216 (NSSQLCore_Functions.m:1110)
13 CoreData 0x00000001a030a240 -[NSSQLBatchUpdateRequestContext executeRequestCore:] + 32 (NSSQLBatchUpdateRequestContext.m:88)
14 CoreData 0x00000001a01c8508 -[NSSQLStoreRequestContext executeRequestUsingConnection:] + 252 (NSSQLStoreRequestContext.m:183)
15 CoreData 0x00000001a01c82b4 __52-[NSSQLDefaultConnectionManager handleStoreRequest:]_block_invoke + 60 (NSSQLConnectionManager.m:302)
16 CoreData 0x00000001a01c81ec __37-[NSSQLiteConnection performAndWait:]_block_invoke + 48 (NSSQLiteConnection.m:733)
17 libdispatch.dylib 0x000000019ff66dd4 _dispatch_client_callout + 20 (object.m:576)
18 libdispatch.dylib 0x000000019ff762c4 _dispatch_lane_barrier_sync_invoke_and_complete + 56 (queue.c:1100)
19 CoreData 0x00000001a01de8d0 -[NSSQLiteConnection performAndWait:] + 176 (NSSQLiteConnection.m:730)
20 CoreData 0x00000001a019d094 -[NSSQLDefaultConnectionManager handleStoreRequest:] + 248 (NSSQLConnectionManager.m:297)
21 CoreData 0x00000001a019cf64 -[NSSQLCoreDispatchManager routeStoreRequest:] + 228 (NSSQLCoreDispatchManager.m:60)
22 CoreData 0x00000001a019cd68 -[NSSQLCore dispatchRequest:withRetries:] + 172 (NSSQLCore.m:3975)
23 CoreData 0x00000001a01bc034 -[NSSQLCore executeRequest:withContext:error:] + 1208 (NSSQLCore.m:2951)
24 CoreData 0x00000001a01d06a0 __65-[NSPersistentStoreCoordinator executeRequest:withContext:error:]_block_invoke.541 + 4156 (NSPersistentStoreCoordinator.m:2994)
25 CoreData 0x00000001a01cf57c -[NSPersistentStoreCoordinator _routeHeavyweightBlock:] + 264 (NSPersistentStoreCoordinator.m:641)
26 CoreData 0x00000001a01abc48 -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 1048 (NSPersistentStoreCoordinator.m:2768)
27 CoreData 0x00000001a018bbdc -[NSManagedObjectContext executeRequest:error:] + 700 (NSManagedObjectContext.m:2044)
28 CoreData 0x00000001a0265be8 __116+[NSCKRecordMetadata batchUpdateMetadataMatchingEntityIdsAndPKs:withUpdates:inStore:withManagedObjectContext:error:]_block_invoke + 128 (NSCKRecordMetadata.m:744)
29 CoreFoundation 0x000000019806dfb4 __NSDICTIONARY_IS_CALLING_OUT_TO_A_BLOCK__ + 24 (NSDictionaryHelpers.m:10)
30 CoreFoundation 0x000000019806de2c -[__NSDictionaryM enumerateKeysAndObjectsWithOptions:usingBlock:] + 288 (NSDictionaryM.m:271)
31 CoreData 0x00000001a0265970 +[NSCKRecordMetadata batchUpdateMetadataMatchingEntityIdsAndPKs:
Post
Replies
Boosts
Views
Activity
Hello!
I watched a great WWDC session that introduces new scroll view API in iOS 17: scrollTargetBehavior.
I'm developing a "carousel" view with new API, but got stuck with implementing a behaviour, when "inner" view, that is smaller than "edge" views, isn't centred while scrolling.
The first picture is how it works, the second one - is an expected result (so, the second card is centered when user scrolls).
Would appreciate any help or suggestions how to get it done.
PS: scrollTargetBehavior(.paging) didn't help much
~Paul
Attaching the source code:
import SwiftUI
struct CardView: View {
private let name: String
private let width: CGFloat
init(id: String, width: CGFloat) {
self.name = id
self.width = width
}
var body: some View {
Text("Card \(name)")
.frame(width: width, height: 120)
.background(Color.cyan)
.clipShape(RoundedRectangle(cornerRadius: 12))
}
}
struct ContentView: View {
var body: some View {
GeometryReader { geometry in
let innderCardWidth = geometry.size.width * 0.7
let edgeCardWidth = geometry.size.width * 0.9
ScrollView(.horizontal) {
LazyHStack {
CardView(id: "1", width: edgeCardWidth)
CardView(id: "2", width: innderCardWidth)
CardView(id: "3", width: edgeCardWidth)
}
.scrollTargetLayout()
}
.scrollTargetBehavior(.viewAligned)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Hello!
I was wondering if there's any open source example how to implement SUBQUERY in CoreData in calendar based app?
For example:
User creates an event with subtasks on the 1st on September with daily frequency
On the 5th of September they update just that day event's details, some subtasks.
On the 7th of September they see the same event that was created on the 1st of September.
Structs that can describe the case may look like this:
enum Frequency {
case daily
case weekly
case monthly
}
struct Subtask {
var name: String
var isCompleted: Bool
}
struct Event {
var id: UUID
var name: String
var startAt: Date
var repeatUntil: Date?
var isCompleted: Bool
var subtasks: [Subtask]
var frequency: Frequency?
var excludedOn: [Date]
}
For each day on a week I need to fetch events from CoreData, so I'm wondering how predicate can look like in such case?
I met SUBQUERY, but I'm not sure how to apply weekly and monthly frequency frequency into NSPredicate (for daily it's pretty straightforward).
Would be glad for any advices!
~Paul