Posts

Post not yet marked as solved
2 Replies
3.0k Views
I am using SwiftUI to make an app and storing the data on ICloud. Because all the code I can find relates to Swift and viewDidLoad and TableView, however this do not apply. I have written code and seems to retrieve it but will not return it to the ObservableObject to be able to display in the SwiftUIThe ObservableObject file:-import SwiftUI import Combine final class ObservedData: ObservableObject { @Published var venues = venuesData }The query to retrieve dataimport SwiftUI import CloudKit var venuesData: [Venue] = loadVenues() func loadVenues() -> [Venue] { var data = [Venue]() let pred = NSPredicate(value: true) let sort = NSSortDescriptor(key: "id", ascending: true) let query = CKQuery(recordType: "DeptfordHopData", predicate: pred) query.sortDescriptors = [sort] let operation = CKQueryOperation(query: query) operation.desiredKeys = ["id","name", "address"] operation.resultsLimit = 50 var newVenues = [Venue]() operation.recordFetchedBlock = { record in let venue = Venue() venue.racordID = record.recordID venue.id = record["id"] venue.name = record["name"] venue.address = record["address"] newVenues.append(venue) } operation.queryCompletionBlock = {(cursor, error) in DispatchQueue.main.async { if error == nil { data = newVenues } else { print(error!.localizedDescription) } } } CKContainer.default().publicCloudDatabase.add(operation) return data }I have got data showing when do breakpoint at line 40 in data but does not return to venueData
Posted Last updated
.
Post marked as solved
4 Replies
3k Views
import UIKit class TodoListViewController: UITableViewController { var itemArray = ["Nigel", "Bee", "Anita"] override func viewDidLoad() { super.viewDidLoad() } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return itemArray.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "TodoItemCell", for: indexPath) cell.textLabel?.text = itemArray[indexPath.row] return cell } override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { if tableView.cellForRow(at: indexPath)?.accessoryType == .checkmark { tableView.cellForRow(at: indexPath)?.accessoryType = .none } else { tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark } tableView.deselectRow(at: indexPath, animated: true) } @IBAction func addButtonPressed(_ sender: UIBarButtonItem) { var newItem = UITextField() let alert = UIAlertController(title: "Add New Item", message: "", preferredStyle: .alert) let action = UIAlertAction(title: "Add", style: .default) { (action) in self.itemArray.append(newItem.text!) self.tableView.reloadData() } alert.addTextField { (alertTextField) in alertTextField.placeholder = "Enter new item" newItem = alertTextField } alert.addAction(action) present(alert, animated: true) } }Error in debug2019-06-11 13:31:26.783306+0100 Todoey12[6639:567620] [WindowServer] display_timer_callback: unexpected state (now:1e28e9628efe < expected:1e28ea5d2bc6)Xcode v 10.2.1 Swift 5 - iOS 12.2
Posted Last updated
.