You have to keep a reference to the Cancellable returned by sink:
import Combine
class MyModel: ObservableObject {
@Published var selection = FamilyActivitySelection()
var cancellables = Set<AnyCancellable>()
init() {
$selection.sink {
newSelection in
print(newSelection)
}.store(in: &cancellables)
}
}
Post
Replies
Boosts
Views
Activity
This works as intended.
Try if using the new Observation helps in your case.
Unfortunately plane detection is still unsupported in the simulator. There is already a thread about this problem.
I came up with the following solution to dynamically load Assets from Data after reading a thread on StackOverflow :
import Foundation
import AVFoundation
#if os(macOS)
import AppKit
#else
import UIKit
#endif
// Don't forget to set the File Type field in the asset catalog to the correct UTI string: com.apple.quicktime-movie
extension NSDataAsset:AVAssetResourceLoaderDelegate{
@objc public func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool {
if let infoRequest = loadingRequest.contentInformationRequest{
infoRequest.isEntireLengthAvailableOnDemand = true
infoRequest.contentType = typeIdentifier
infoRequest.contentLength = Int64(data.count)
infoRequest.isByteRangeAccessSupported = true
#if DEBUG
print(infoRequest)
#endif
}
if let dataRequest = loadingRequest.dataRequest{
#if DEBUG
print(dataRequest)
#endif
dataRequest.respond(with: data.subdata(in:Int(dataRequest.requestedOffset) ..< Int(dataRequest.requestedOffset) + dataRequest.requestedLength))
loadingRequest.finishLoading()
return true
}
return false
}
}
extension AVURLAsset{
public convenience init?(_ dataAsset:NSDataAsset){
guard let name = dataAsset.name.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed),
let url = URL(string:"NSDataAsset://\(name))")
else {return nil}
self.init(url:url) // not really used!
self.resourceLoader.setDelegate(dataAsset, queue: .main)
// Retain the weak delegate for the lifetime of AVURLAsset
objc_setAssociatedObject(self, "AVURLAsset+NSDataAsset", dataAsset, .OBJC_ASSOCIATION_RETAIN)
}
}
On device your App runs in the sandbox, in the simulator there are no file access restrictions:
You have to request access to files in certain directories using code similar to this:
_ = url.startAccessingSecurityScopedResource()
// your file access here
url.stopAccessingSecurityScopedResource()
https://developer.apple.com/documentation/foundation/nsurl/1417051-startaccessingsecurityscopedreso
Because the formatting of your message and code is broken I can't be sure. Does this even compile?
At least it should say id:\.self
Finally(!) four weeks later the necessary update was published: https://apps.apple.com/de/app/swift-playgrounds/id908519492
This seems to be a missing translation in iOS. It started in iOS 16, was fixed in iOS 17 betas and now unfortunately returned for 17.0.
You can add a Localizable.strings file to your project containing the following text:
"Back" = "Zurück";
iOS Version expired already a week ago though.
You have to mark your struct Dummy and var name as public.
The whole "transferable" API seems pretty strange. Only some cases seem to work and no progress since last year.
If it could be bypassed, that would be a serious error.
But you can always use: PHPhotoLibrary.requestAuthorization(for:handler:)
CameraView is Part of HomeKit and for surveillance cameras. Are you sure you want that?
An example for using the "regular" camera APIs can be found here.
No, unfortunately not.
Neither filing a Radar (FB11766691) with Feedback Assistant on 13.12.22 nor joining a session on „Ask Apple“ yielded any actionable result.
Could this be a result of App Transport Security which is active on iOS devices but not in the simulator?