According to the HIG, - https://developer.apple.com/design/human-interface-guidelines/macos/windows-and-views/popovers/ changes in popover size should be animated:
Animate changes in size to avoid giving the impression that a new popover replaced the old one. How can this be done in SwiftUI? No matter where I put .animate() annotations, I can't get the actual popover frame to transition smoothly. Best I can get is that the popover frame changes immediately, and then the controls awkwardly animate over to the right location.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I have a local file server with git repositories and ssh access. I have several swift packages stored there, and some of them have been successfully added as dependencies in projects using Xcode 11.
I am now unable to add any package dependencies like this in Xcode 12.
I can successfully clone the repo from the Source Control -> Clone... menu so I know the repo is valid.
The steps I am following are to add the dependency:
File -> Swift Packages -> Add Package Dependency...
Enter: ssh://MyServer.local/path/to/git/repo
Xcode prompts for credentials -> success
Xcode asks for the import rules, with correctly filled in version numbers (so I know it can access the repo at this point)
I accept the defaults, click "next"
I get the following error:
The source control operation failed because no working copy could be found. Make sure the file is in a valid working copy and try again. Any idea how resolve this? Existing SPM packages resolve and work correctly, but I can't add any new ones.
I have an iOS app and macOS app that sync data using CloudKit (no CoreData involved). Syncing mostly works, except that on my development machine I don't get any push notifications when other devices make changes.
For example I can make a data change on macOS and it gets pushed to my iOS app immediately, however if I make a change on iOS, the macOS app never gets a notification. I can check in CloudKit dashboard and the data has been updated, and a push was sent, but the macOS app never gets it.
The subscription is set up like so (same code on macOS and iOS) and it reports success on both platforms:
private func subscribeToCloudKitChanges() {
		if UserDefaults.standard.bool(forKey: ckSubscriptionStateKey) == true { return }
		
		let subscription = CKDatabaseSubscription(subscriptionID: cloudKitPrivateChangeID)
		let notificationInfo = CKSubscription.NotificationInfo()
		notificationInfo.shouldSendContentAvailable = true
		subscription.notificationInfo = notificationInfo
		
		let op = CKModifySubscriptionsOperation(
				subscriptionsToSave: [subscription],
				subscriptionIDsToDelete: []
		)
		op.modifySubscriptionsCompletionBlock = { (_, _, error) in
				if let error = error {
						logger.error("Error setting up CloudKit subscriptions: \(error.localizedDescription)")
						UserDefaults.standard.set(false, forKey: ckSubscriptionStateKey)
				} else {
						logger.log("CloudKit subscriptions created")
						UserDefaults.standard.set(true, forKey: ckSubscriptionStateKey)
				}
		}
		op.qualityOfService = .utility
		ckContainer.privateCloudDatabase.add(op)
}
The remote notifications are requested like so, and always reports that is is registered. Though oddly enough I never get the callback to say it has been registered?
func applicationDidFinishLaunching(_ notification: Notification) {
		NSApplication.shared.registerForRemoteNotifications()
		print("Requested remote notifications. Status: \(NSApplication.shared.isRegisteredForRemoteNotifications)")
//...
And finally, to receive the iCloud change notification:
func application(_ application: NSApplication, didReceiveRemoteNotification userInfo: [String : Any]) {
guard let ckn = CKDatabaseNotification(fromRemoteNotificationDictionary: userInfo) else { return }
if ckn.subscriptionID == cloudKitPrivateChangeID {
DispatchQueue.main.async {
self.cloudKitPrivateDBChanges.send(ckn)
}
}
}
Prior to Mac OS X 10.12.2 I had been using the code below to generate ridge noise the looked more or less like the picture in the documentation for GKRidgeNoiseSource:let srcRidges = GKRidgedNoiseSource(frequency: 0.1,
octaveCount: 2,
lacunarity: 1.5,
seed: 12345)
let noise = GKNoise(srcRidges)
let map = GKNoiseMap(noise,
size: vector_double2(x:200, y: 200),
origin: vector_double2(x:0, y:0),
sampleCount: vector_int2(x:200, y:200),
seamless: false)
let tex = SKTexture(noiseMap: map)
let cgimg = tex.cgImage()
let nsimg = NSImage(cgImage: cgimg, size: NSSize(width: 200, height: 200))The same code after 10.12.2 produces mostly garbage, as can be seen by pasting this into a playground. Am I using it wrong, or did something break with this noise source?
I have a macOS daemon that needs to store a password. If I run the daemon as root, I can store and retrieve the password in the system keychain, but if I create a dedicated user/group for the daemon (so it runs as user _myDaemon for example), adding the password to the keychain fails with -61 (errSecWrPerm).
My daemon will be responding to network requests so I would prefer it to not run as root for security reasons. I'm not sure what is the best way to proceed:
Is there a way to grant system keychain access for a dedicated daemon user?
Should I split off the keychain access into a "helper daemon" that runs as root?
Something else?