I think my topic is related to https://developer.apple.com/forums/thread/697197 .
Post
Replies
Boosts
Views
Activity
Thank you for your reply. Yes and no. I've figured out that I can do it by having an additional Date attribute. So I've started with a new Xcode project by having a new Date attribute named createdAt. And code goes as follows.
import SwiftUI
struct ContentView: View {
@Environment(\.managedObjectContext) var managedObject
@FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \Student.createdAt, ascending: true)]) var students: FetchedResults<Student>
var body: some View {
VStack {
List(students) { student in
Text(student.name ?? "")
}
Button {
let firstNames = ...
let lastNames = ...
if let selectedFirstName = firstNames.randomElement(), let selectedLastName = lastNames.randomElement() {
let newStudent = Student(context: managedObject)
newStudent.id = UUID()
newStudent.name = "\(selectedFirstName) \(selectedLastName)"
newStudent.createdAt = Date() // <<<<<<<<<<<<<<<<<<<<<<
try? managedObject.save()
}
} label: {
Text("Add")
}
}
}
}
, which takes care of the sort issue. As for the older project shown above, I wonder if Core Data has a simple mechanism in reordering the records when the entity does not include an additional Date attribute? That was my initial question.
No, I haven't. I don't even remember having posted this question although I know what this case is about.
Thanks. I'm not sure how that helps, though. In the meantime, Paul from Hacking with Swift shows how the List guy works. I've tested the exact lines of code he has, and the selection symbol doesn't appear, either. That's odd. The article is not even one year old. By the way, I'm using Xcode 14.3. https://www.hackingwithswift.com/quick-start/swiftui/how-to-allow-row-selection-in-a-list
Hmm... I'm sorry. I realize that I should have done that. I cannot edit the topic any more.
It's cheesy, but I guess one way of doing it is to use Circle().stroke.
I got it.
I guess it's the matter of setting a preset to AVCaptureSession.
If I set the preset to
captureSession.sessionPreset = .hd1280x720
, I get a different image.
I've ended up with the following lines of code.
func prepareCamera(cameraCase: CameraCase) {
/* removing existing layers */
if let sublayers = self.view.layer.sublayers {
for sublayer in sublayers {
if sublayer.isKind(of: AVCaptureVideoPreviewLayer.self) {
sublayer.removeFromSuperlayer()
}
}
}
/* creating a capture session */
captureSession = AVCaptureSession()
guard let device = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInWideAngleCamera], mediaType: AVMediaType.video, position: cameraCase == .front ? .front : .back).devices.first else { return }
let videoInput = try? AVCaptureDeviceInput(device: device)
if captureSession.canAddInput(videoInput!) {
captureSession.addInput(videoInput!)
imagePhotoOutput = AVCapturePhotoOutput() // setting output destination
captureSession.addOutput(imagePhotoOutput) // adding photo output to session
}
/* creating a capture layer */
let previewLayer: AVCaptureVideoPreviewLayer = AVCaptureVideoPreviewLayer.init(session: captureSession)
previewLayer.videoGravity = AVLayerVideoGravity.resizeAspect
/* adding video capture layer to the view layer */
self.view.layer.addSublayer(previewLayer)
/* starting capture session */
DispatchQueue.global(qos: .background).async {
self.captureSession.startRunning()
}
}
Oops... The position argument is the other way around.
It looks like it cannot be used on a non-Apple silicon Mac.
I've used a custom sorting method with enum in reference to a topic at stack overflow.. (the one written by Martin R...)
when we use access a dataset in Realm -> when we access a dataset in Realm
It sounds like I've screwed up a big time according to RayWenderlich's article. https://www.raywenderlich.com/697468-ios-file-provider-extension-tutorial