Posts

Post not yet marked as solved
2 Replies
331 Views
My simple app got initially rejected for "We need additional time to evaluate your submission and Apple Developer Program account. Your submission status will appear as "Rejected" in App Store Connect while we investigate. However, we do not require a revised binary or additional information from you at this time." I realised I hadn't agreed to one of the agreements so I did that and resubmitted and now it's just been stuck at Waiting for Review for 5 days... Should I just delete it and publish the app again because I need this app approved asap.... or would I just have to wait?
Posted
by yh29.
Last updated
.
Post not yet marked as solved
0 Replies
213 Views
I'm making a to-do list app and I have an ItemModel which just stores the title(String) and boolean. So from the list, I want to be able to click on the title and push that title(String value) into a different view How can I do this? Model import Foundation struct ItemModel: Identifiable, Hashable{ let id: String = UUID().uuidString let title:String } The List List { ForEach(items) {item in NavigationLink(item.title, value: item) } .navigationDestination(for: String.self) { toDoItem SpecificItemView(item: toDoItem.title) }
Posted
by yh29.
Last updated
.
Post marked as solved
2 Replies
315 Views
So I'm making this to do list app for myself and what I want to do is I want people do users to add to-dos and being able to click on them using navigation link, which takes them to a new view. The problem here is i don't know how to create a new view everytime user creates a content in list. How would i do this?
Posted
by yh29.
Last updated
.
Post marked as solved
3 Replies
610 Views
Hello, I recently started learning Swift and now I'm using Cloudkit to store user information. I kinda have no idea what I'm doing but I watched this youtube tutorial to save user data and display it in UI instantly with DispatchQueue.main.async but it keeps throwing me an error, saying "No exact matches in call to instance method 'save'" What I want to do is I want users to save a new record and I want this record to be updated instantly and be displayed on the screen. How could I fix this? import Foundation import CloudKit enum RecordType:String { case movie = "Movie" } class SavingMovieViewModel : ObservableObject{ private var database :CKDatabase private var container : CKContainer @Published var movies: [SavingMovieModel] = [] init(container: CKContainer){ self.container = container self.database = container.publicCloudDatabase } func saveMovie(title:String, director: String, stars:String, review: String){ let record = CKRecord(recordType: RecordType.movie.rawValue) let movie = Movie(theTitle: title, theDirector: director, theStars: stars, theReview: review) record.setValuesForKeys(movie.toDictionary()) // saving self.database.save(record) { newRecord, error in. //<-- here is where the error is :( if let error = error{ print(error) } else{ if let newRecord = newRecord{ //<-- this bit is the problem. i need the new record added to be displayed instantly if let movie = Movie.fromRecord(newRecord){ DispatchQueue.main.async { self.movies.append(SavingMovieModel(Movie: movie)) } } } } } } func whatMovies(){ //creating an array of movies var movies: [Movie] = [] let query = CKQuery(recordType: RecordType.movie.rawValue, predicate: NSPredicate(value: true)) database.fetch(withQuery: query) { result in switch result{ case.success(let result): result.matchResults.compactMap{$0.1} .forEach{ switch $0 { case.success(let record): if let movie = Movie.fromRecord(record){ movies.append(movie) } case.failure(let error): print(error) } } DispatchQueue.main.async { self.movies = movies.map(SavingMovieModel.init) } case.failure(let error): print(error) } } } } struct SavingMovieModel{ let movie: Movie var movieId :CKRecord.ID?{ movie.movieId } var title:String{ movie.title } var director:String{ movie.director } var stars:String{ movie.stars } var review:String{ movie.review } } This is the Movie struct for Movie objects import Foundation import CloudKit struct Movie{ var movieId: CKRecord.ID? var title:String var director:String var stars:String var review:String init(movieId: CKRecord.ID? = nil, theTitle:String, theDirector:String, theStars:String, theReview:String){ self.title = theTitle self.director = theDirector self.stars = theStars self.review = theReview self.movieId = movieId } func toDictionary() -> [String:Any]{ return ["title": title, "director" :director, "stars":stars, "review": review] } static func fromRecord(_ record :CKRecord) -> Movie? { guard let title = record.value(forKey:"title") as? String, let director = record.value(forKey:"director") as? String, let stars = record.value(forKey:"stars") as? String, let review = record.value(forKey:"review") as? String else{ return nil } return Movie(movieId: record.recordID, theTitle: title, theDirector: director, theStars: stars, theReview: review) } }
Posted
by yh29.
Last updated
.
Post marked as solved
2 Replies
497 Views
So I'm making this app and realised I have two back buttons. From the very first view, when I enter the second view and enter the third view from the second view, I have two back buttons, the very first page back button and the second back button. How do I get rid of the very first back button? This is the code for the second view. If the first view's code is quite long so if needed, please ask me Thank you import SwiftUI struct MovieView: View { @Environment(\.presentationMode) private var presentationMode: Binding<PresentationMode> var body: some View { NavigationView{ VStack{ List{ //Your Name Block NavigationLink { YourNameView() } label: { VStack{ Image("your name") .resizable() .aspectRatio(contentMode: .fill) .cornerRadius(20) Text("Your Name") .fontWeight(.bold) .font(.system(size:20)) } .padding() .background(Image("beige")) } //notting hill block NavigationLink { NottingHillView() } label: { VStack{ Image("notting hill") .resizable() .aspectRatio(contentMode: .fill) .cornerRadius(20) Text("Notting Hill") .fontWeight(.bold) .font(.system(size:20)) } .background(Image("beige")) .padding() } //notting hill block NavigationLink { //Love_OtherDrugsView() } label: { VStack{ Image("love and other drugs") .resizable() .aspectRatio(contentMode: .fill) .cornerRadius(20) Text("Love & Other Drugs") .fontWeight(.bold) .font(.system(size:20)) } .padding() .background(Image("beige")) } } .navigationTitle("Movies") Spacer() Button { } label: { VStack{ Image(systemName: "plus.circle.fill") .resizable() .scaledToFit() .frame(width:24, height:24) .foregroundColor(Color.red) Text("Add movie") .foregroundColor(Color.red) } } } } } struct MovieView_Previews: PreviewProvider { static var previews: some View { MovieView() } } }
Posted
by yh29.
Last updated
.
Post marked as solved
1 Replies
416 Views
Hello, I want to use this observableobject that I made in SavingMovieView in MovieView How do I do this...? import SwiftUI import CloudKit struct MovieView: View { @State var showingSavingMovieSheet:Bool = false var body: some View { NavigationView{ ZStack(alignment: .bottomTrailing){ //the list of movies List{ //ForEach(vm.movies) { movies in //} //Your Name Block NavigationLink { // } label: { VStack{ Image("your name") .resizable() .aspectRatio(contentMode: .fill) .cornerRadius(20) Text("Your Name") .fontWeight(.bold) .font(.system(size:20)) } .padding() .background(Image("beige")) } //notting hill block NavigationLink { NottingHillView() } label: { VStack{ Image("notting hill") .resizable() .aspectRatio(contentMode: .fill) .cornerRadius(20) Text("Notting Hill") .fontWeight(.bold) .font(.system(size:20)) } .background(Image("beige")) .padding() } //notting hill block NavigationLink { //Love_OtherDrugsView() } label: { VStack{ Image("love and other drugs") .resizable() .aspectRatio(contentMode: .fill) .cornerRadius(20) Text("Love & Other Drugs") .fontWeight(.bold) .font(.system(size:20)) } .background(Image("beige")) .padding() } } .scrollContentBackground(.hidden) .background(Image("beige")) Button { showingSavingMovieSheet.toggle() } label: { Image(systemName: "plus.circle.fill") .font(.system(size: 70)) .foregroundColor(.accentColor) .shadow(color: .gray, radius: 0.2, x: 1, y: 1) } .padding() .sheet(isPresented: $showingSavingMovieSheet) { SavingMovieView(vm: SavingMovieViewModel(container: CKContainer.default())) .presentationDetents([.fraction(0.5)]) } } .edgesIgnoringSafeArea(.bottom) .toolbar { ToolbarItem(placement: .principal){ Text("Movies") .font(Font.custom("Titan One",size:50)) .bold() .foregroundColor(Color.accentColor) } } } } } struct MovieView_Previews: PreviewProvider { static var previews: some View { MovieView() } } struct SavingMovieView: View { //making an object from the viewModel @StateObject private var vm: SavingMovieViewModel @State private var title: String = "" @State private var director: String = "" @State private var stars: String = "" @State private var review: String = "" @Environment(\.dismiss) var dismiss init(vm: SavingMovieViewModel){ _vm = StateObject(wrappedValue: vm) } var body: some View { VStack{ Text("Add movie") .bold() .foregroundColor(Color.accentColor) .font(Font.custom("Titan One",size:50)) TextField("Movie Title", text: $title) .textFieldStyle(.roundedBorder) TextField("Director Name", text: $director) .textFieldStyle(.roundedBorder) TextField("Number of rating stars", text: $stars) .textFieldStyle(.roundedBorder) TextField("Description", text: $review) .textFieldStyle(.roundedBorder) Button { vm.saveMovie(title: title, director: director, stars: stars, review: review) dismiss() } label: { Text("Save") } } .padding() } } struct SavingMovieView_Previews: PreviewProvider { static var previews: some View { SavingMovieView(vm: SavingMovieViewModel(container: CKContainer.default())) } }
Posted
by yh29.
Last updated
.
Post marked as solved
2 Replies
336 Views
Hello So essentially I want to create an instance of a class using the TextField input class Movie: ObservableObject{ @Published var name:String = "" @Published var director:String = "" @Published var stars:Double = 0.0 @Published var review:String = "" func setName(theName:String){ self.name = theName } func setDirector(theDirector:String){ self.director = theDirector } func setStars(theStars:Double){ self.stars = theStars } func setReview(theReview:String){ self.review = theReview } } so this is the class that I want to initialise and I want to get a value from the struct below and store it in variables in this class struct BottomSheetView:View{ @StateObject var newMovie = Movie() var body: some View{ VStack(alignment: .leading){ Text("Add Movie") .fontWeight(.bold) .font(.system(size:30)) .padding() TextField("Movie name", text: ???? } } } I want to get a String from the textfield above and store to var name:String in the Movie class How do I do this?
Posted
by yh29.
Last updated
.
Post marked as solved
1 Replies
476 Views
Hello, I recently started learning Swift to make this app. In my app, I want to send an invite to people like how in the "NoteIt app , you can send your code and link your account with the other person. How can I do this?
Posted
by yh29.
Last updated
.
Post not yet marked as solved
0 Replies
301 Views
Hello, I just started learning Swift and I'm currently making an app. In my app, I want users to input Moive's name, the director's name and how many stars they'll give to a movie using TextField and store this info by making an object and display it in another view. Is this possible? If yes, then how?
Posted
by yh29.
Last updated
.