parse-community / Parse-Swift

The Swift SDK for Parse Platform (iOS, macOS, watchOS, tvOS, Linux, Android, Windows)
https://parseplatform.org
MIT License
308 stars 69 forks source link

Automatic loading of PFObject subclasses does not work on Xcode 16 / iOS 18 #452

Open sjmckee opened 2 weeks ago

sjmckee commented 2 weeks ago

New Issue Checklist

Issue Description

ParseSwift uses PFObject instances for basically everything. All subclasses of PFObject are represented in MongoDB/PostgreSQL as collections/tables with given names. Mapping of the PFObject subclasses and their names in MongoDB/PostreSQL need to be known to Parse SDK so that PFObject subclasses can be loaded/stored properly to the database.

Prior to Xcode 16, there was no need to manually register any classes explicitly subclass PFSubclassing. After upgrading, the following error occurs when running the application: Thread 1: "The class My_App.MyParseSubclass must be registered with registerSubclass before using Parse."

Here is a link to a similar issue the Parse-SDK-iOS-OSX project: https://github.com/parse-community/Parse-SDK-iOS-OSX/issues/1792

Steps to reproduce

Build and run an application with subclasses of PFSublassing using Xcode 16.

Actual Outcome

Thread 1: "The class My_App.MyParseSubclass must be registered with registerSubclass before using Parse."

Workaround

Manually register each object subclassing PFSubclassing directly after Parse Swift initialization:

let configuration = ParseClientConfiguration {
      $0.applicationId = "mapped"
      $0.server = "https://myserver/myparseinstance"
  }
  Parse.initialize(with: configuration)

  MyParseSubclass.registerSubclass()

Expected Outcome

App functioning properly without any subclassing errors.

Environment

Client

Server

Database

Logs

parse-github-assistant[bot] commented 2 weeks ago

Thanks for opening this issue!