Swift Student Challenge

RSS for tag

Ask questions and connect with other challenge applicants.

Posts under Swift Student Challenge tag

52 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

Save images in SwiftData
Hello everyone, Is there a better solution than my approach out there to convert an image to data and back? @Model class User { var name: String @Attribute(.externalStorage) var image: Data? var createdAt: Date init(name: String, image: Data, createdAt: Date = .now) { self.name = name self.image = image self.createdAt = createdAt } } if let selectedPhotoData = imageData, let uiImage = UIImage(data: selectedPhotoData) { Image(uiImage: uiImage) .resizable() .scaledToFill() .frame(width: 300, height: 300, alignment: .center) .clipShape(Circle()) } .task(id: selectedPhoto) { if let data = try? await selectedPhoto?.loadTransferable(type: Data.self) { imageData = data } }
2
0
3.5k
Jan ’24
Swift Playgrounds version of 'Copy Bundle Resources' build phase
Hi! I'm participating in the Swift Student Developer competition this year, which requires developers to present a Swift Playground to Apple. I'm used to making normal Xcode projects, and am having trouble finding a Swift Playgrounds version of the Copy Bundle Resources build phase (I don't think it is possible to edit build phases in a Swift Playground). I created a '.usdz' file from a 3D model I designed using Reality Converter and added it to the root of my Swift Playground project. I access the file programmatically from the App Bundle like so (fileName is a non-nullable String): guard let path = Bundle.main.path(forResource: fileName, ofType: "usdz") else { fatalError("Couldn't find the USDZ file.") } At runtime, this throws the Couldn't find the USDZ file error, as the file isn't being copied to the App Bundle. In a normal Xcode project, according to this StackOverflow question, I can get xcodebuild to copy my file over by specifying it in the Copy Bundle Resources build phase, however, in a Swift Playground (required by Apple), I am restricted from modifying Xcode's buildphases (the option is not present when clicking on the default target - the only options are General, Signing & Capabilites and Package Dependencies). How can I ensure that resources are copied over to the App Bundle at buildtime in a Swift Playground? If this is not possible, are there any other options besides using the Bundle.main.path API for accessing the USDZ file (to load a QuickLook preview) at runtime?
2
0
1.1k
Jan ’24
Swift Student Challenge
Hi, I stumbled about the Swift Student Challenge at Apples Website and now I have some questions. I've programmed some Apps in Xcode and I think one of them might be pretty god for this Challenge. Now I've read something about Swift Playgrounds and I'm confused. What's a Swift Playground? Do I need to create one or is it enough to have the App? and finally: I'm currently 14 and live in Germany. Is it possible to participate when I'm 14? And if not would it be a big thing to lets say forget my age and somehow think that I'm 16? Thanks a lot for answers
3
0
867
Jan ’24
Why the icons cannot change immediately?
These are the three views in my to do list project. I want to save data, so users' to do list will still be there after they launch the app. But whenever I click on the icon "check.circle' or "circle", they cannot switch immediately. They will switch after I launch the app again. I don't know how to let icon switched immediately. Thanks in advance!!! // Content View import SwiftUI struct ContentView: View { @EnvironmentObject var listViewModel: ListViewModel @State var newText: String = "" @State var detents: PresentationDetent = .medium @State var showSheet: Bool = false static var item1 = ItemModel(title: "First", isCompleted: false) var body: some View { NavigationView { List { ForEach(listViewModel.items) { item in ListRowView(item: item) .onTapGesture { listViewModel.updateItem(item: item). -> * } } .onDelete(perform: listViewModel.delete) .onMove(perform: listViewModel.moveItem) } .navigationTitle("To Do List") .navigationBarItems( leading: EditButton(), trailing: Button( action: { showSheet.toggle() }, label: { Text("Add") }) .sheet( isPresented: $showSheet, content: { SecondScreen() .presentationDetents([.height(500)]) } )) } } } // List View Model -> * func saveItems() { if let encodedData = try? JSONEncoder().encode(items) { UserDefaults.standard.set(encodedData, forKey: itemsKey) } } // Item Model import Foundation struct ItemModel: Identifiable, Codable { let id: String let title: String var isCompleted: Bool init(id: String = UUID().uuidString, title: String, isCompleted: Bool) { self.id = id self.title = title self.isCompleted = isCompleted } func updateCompletion() -> ItemModel {. -> * return ItemModel(id: id, title: title, isCompleted: !isCompleted) } }
1
0
406
Jan ’24
iOS 17 Features being depreciated
I am currently working on my project for the Swift Student Challenge 2024. I am trying to implement a feature (.defaultScrollAnchor on a ScrollView in this instance). However, when trying to build/run the app in Xcode it says that .defaultScrollAnchor is only compatible with iOS 17. If I try to use .scrollPosition(initialAnchor: ), it also doesn't work (likely because it has been depreciated). I printed the system version as suggested in another post, and it showed the simulator was running iOS 17.2. Why can't the app build/run with this feature if the simulator is running iOS 17.2? MacBook Pro 14" 2021 M1 Pro Xcode Version 15.1 macOS Sonoma 14.0
1
0
1.6k
Jan ’24