Not sure but you should add some print in your code to see when all your closures execute as you seem to always change queue even when you already are in the same queue. You may do the fetch on main queue or block it from other thread.
Post
Replies
Boosts
Views
Activity
It is more a problem between you and your client. Who will be the owner if the app ? What will happen when your contract with your client ends ?
Also pay attention that you will be required by Apple to certify that you have the right to use client data.
Another thing to check for CarPlay Simulator is the MacOS Firewall . It is specified in some help that the CarPlay simulator must be enabled in it.
By default incoming connections are disabled for all apps. You must add the CarPlay Simulator in the authorised apps.
It seems that it happens when choosing "Mac Catalyst" but not when choosing "Mac (Design for iPad)". That may be a workaround.
Did you tried to remove derives data ?
You can nor see if XCode is trying to build/start fir preview by Clocking in the circle ⭕️ on top of window : it show the list of process that XCode is doing (indexing, comp for preview, starting simulator…)
tou can also try to change the selected output on the preview tab in the bottom when it enable it (sometime you can choose : currently i did not managed to understand when)
Did you checked in Settings / Confidentiality and Security / Files and Folders or Full disk access ?
if You write in swift 4 it will be compatible with swift 5. So except if you want to use some specific swift 5 feature (as if let *** short syntax) so you can use swift 4.
From your screenshot the binary were uploaded only 2 (88 days expires ) or 4 (86 days expires) days ago. So it can not be waiting for more 7 days ❓
Create a workspace and copy the full project in it. Then use xCode as an editor.
May be CoreML is not what you need ? refer are more suitable for this.
xCode enable completion up to the next possibility.
In xCode select the Target , goto general tab then iPad orientation
The problem is mostly that the IP address may not be valid for certain access : web site may be addressed on the same IP address with different hostname which are redirected to different web pages (that is part of apache configuration possibilities for example). SO it may work work but be careful.
This is quite ugly but to can help you. The new structure read the new JSON but return the previous interface
`// Old structure
struct ContactMediumOld: Codable {
struct ContactMedium: Codable {
var type: String
struct Characteristic: Codable {
var emailAddress : String
}
var characteristic: Characteristic
}
var contactMedium: [ContactMedium]
}
// New structure
struct ContactMediumNew: Codable {
struct ContactMedium: Codable {
var type: String
struct Characteristic: Codable {
var emailAddress : String
}
// name of property also changed so use a computed for old name
private var characteristics: Characteristic
var characteristic: Characteristic {
characteristics
}
}
// read an simple object
private var contactMediumNew: ContactMedium
enum CodingKeys: String, CodingKey {
case contactMediumNew = "contactMedium"
}
// but return an array
var contactMedium: [ContactMedium] {
[contactMediumNew]
}
}`
I would suggest you change your code to not use an array now the API has changed. Trying to keep this code will make your app more difficult to maintain. BTW you could create a dummy private var that has a codingKey with this property and set the contactMedium to be an computed array var returning the object.