I have Array of 4 items, and I show 2 of them in table.
And selecting the item in table, I want to print out selected row all items from array.
It works only if I have not sorted the table first.
As soon I sort the table I can't find reference to the array index.
Is there any way to find array index?
sample:
struct testtable: View {
struct Person: Identifiable {
let givenName: String
let familyName: String
let index: String
let id: Int
}
@State private var people = [
Person(givenName: "Juan", familyName: "Chavez", index: "0", id: 0),
Person(givenName: "Mei", familyName: "Chen", index: "1", id: 1),
Person(givenName: "Tom", familyName: "Clark", index: "2", id: 2),
Person(givenName: "Gita", familyName: "Kumar", index: "3", id: 3),
]
@State private var sortOrder = [KeyPathComparator(\Person.givenName)]
@State private var selection : Person.ID?
var body: some View {
Button(action: {
print("array[\(self.selection)]")
let arrayindex: Int = self.selection!
print(people[arrayindex])
}){
Label("Print Array Items", systemImage: "doc.text.magnifyingglass")}
Table(people, selection: $selection, sortOrder: $sortOrder) {
TableColumn("Given Name", value: \.givenName)
TableColumn("Family Name", value: \.familyName)
}
.onChange(of: sortOrder) {
people.sort(using: $0)
}
}
}
Post
Replies
Boosts
Views
Activity
How to filter table content based on search text, sample code:
struct Person: Identifiable {
let givenName: String
let familyName: String
let index: String
let id = UUID()
}
@State private var searchText: String = ""
@State private var people = [
Person(givenName: "Juan", familyName: "Chavez", index: "0"),
Person(givenName: "Mei", familyName: "Chen", index: "1"),
Person(givenName: "Tom", familyName: "Clark", index: "2, id: 2"),
Person(givenName: "Gita", familyName: "Kumar", index: "3, id: 3"),
]
@State private var sortOrder = [KeyPathComparator(\Person.givenName)]
@State private var selection : Person.ID?
var body: some View {
Table(people, selection: $selection, sortOrder: $sortOrder) {
TableColumn("Given Name", value: \.givenName)
TableColumn("Family Name", value: \.familyName)
}
.onChange(of: sortOrder) {
people.sort(using: $0)
}
.searchable(text: $searchText)
}
}
I implemented ATT with google API. And issue is that I never see the popup message itself. I have on my test device, the Personalised Ads greyed out - (with message ..your Apple ID is associated with region where Apple-delivered ads are not available ...)
So when ever I run application I get immediately response for requestTrackingAuthorization reguest - "Denied"
even when I put to debug parameters notEEA and my device as testDeviceIdentifiers ...
still no changes.
Any clue how to get this tracking message popup appearing during testing?
I don't know how to make this function to return base64encoded string of thumbnail in jpeg format.
let request = QLThumbnailGenerator
.Request(fileAt: fileURL, size: size, scale: scale,
representationTypes: .lowQualityThumbnail)
QLThumbnailGenerator.shared.generateRepresentations(for: request)
{ (thumbnail, type, error) in
DispatchQueue.main.async {
if thumbnail == nil || error != nil {
// Handle the error case gracefully.
} else {
// return the thumbnail as bas64 string.
return ...
}
}
}
}
After upgrading to macOS 13, Xcode started to print to console
Picker: the selection "" is invalid and does not have an associated tag, this will give undefined results.
what is wrong here?
struct Piiker: View {
@State var selectOption: [String] = ["1","2","3"]
@State var fieldValue: String = ""
var body: some View {
Picker("Select number", selection: $fieldValue){
ForEach(selectOption, id: \.self){
Text($0)
}
}
}
}
Can anyone help to understand what is causing this warning message on this SampleCode.
it happens when data in table gets updated
it happens when I have lot of items in table and search for lets say # 6543 and then clear the search.
"WARNING: Application performed a reentrant operation in its NSTableView delegate. This warning will become an assert in the future."
If there are just few items in table, the warning is not there.
And it started when updated to Xcode Version 14 and upward
import SwiftUI
import Foundation
@main
struct TestProjectSWIFTApp: App {
@StateObject var mydata: MyData = MyData()
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(mydata)
}
}
}
struct ContentView: View {
@EnvironmentObject var mydata: MyData
var body: some View {
NavigationView{
NavigationLink("TABLE", destination: MyTable())
}
}
}
struct User: Identifiable {
let id: UUID = UUID()
var name: String
var score: Int
}
struct MyTable: View {
@EnvironmentObject var mydata: MyData
@State private var sortOrder = [KeyPathComparator(\User.name)]
@State var searchText: String = ""
var searchResults : [User] {
if searchText.isEmpty {
return mydata.alldata
} else {
return mydata.alldata.filter{$0.name.localizedCaseInsensitiveContains(searchText)}
}
}
var body: some View {
Button("Generate new data", action: {
mydata.updateTable()
})
Table(searchResults, sortOrder: $sortOrder) {
TableColumn("Score"){
Text("\(Double($0.score))")
}
TableColumn("user", value: \.name)
}
.onChange(of: sortOrder) {
mydata.alldata.sort(using: $0)
}
.searchable(text: $searchText)
}
}
@MainActor class MyData : ObservableObject{
@Published var alldata: [User] = []
init(){
self.setData()
}
func setData(){
alldata = [
User(name: "User 1", score: 95),
User(name: "User 2", score: 80),
User(name: "User 3", score: 85)
]
}
func updateTable(){
var newallData: [User] = []
var x = 0
while x < 10000{
newallData.append(User(name: "User #\(x)", score: Int.random(in: 10..<999999)))
x = x + 1
}
alldata = newallData
}
}