คำถามติดแท็ก combine

4
เทียบเท่ากับคุณสมบัติที่คำนวณได้โดยใช้ @Published ใน Swift Combine?
ในความจำเป็นอย่างรวดเร็วมันเป็นเรื่องธรรมดาที่จะใช้คุณสมบัติคำนวณเพื่อให้เข้าถึงข้อมูลได้สะดวกโดยไม่ต้องทำซ้ำ สมมติว่าฉันมีคลาสนี้ทำขึ้นสำหรับการใช้ MVC ที่จำเป็น: class ImperativeUserManager { private(set) var currentUser: User? { didSet { if oldValue != currentUser { NotificationCenter.default.post(name: NSNotification.Name("userStateDidChange"), object: nil) // Observers that receive this notification might then check either currentUser or userIsLoggedIn for the latest state } } } var userIsLoggedIn: Bool { currentUser != nil …

3
วิธีบอกมุมมอง SwiftUI เพื่อผูกกับ ObservableObjects ที่ซ้อนกัน
ผมมีมุมมองที่ SwiftUI ที่ใช้เวลาใน EnvironmentObject appModelที่เรียกว่า จากนั้นอ่านค่าappModel.submodel.countในbodyวิธีการของมัน ผมคาดหวังนี้จะผูกมุมมองของฉันไปยังสถานที่countในsubmodelเพื่อที่จะทำให้อีกครั้งเมื่อการปรับปรุงสถานที่ให้บริการ แต่ตอนนี้ดูเหมือนจะไม่เกิดขึ้น นี่เป็นข้อบกพร่องหรือไม่? และถ้าไม่มีวิธีการที่มีมุมมองที่ผูกกับคุณสมบัติที่ซ้อนกันของวัตถุสภาพแวดล้อมใน SwiftUI คืออะไร? แบบจำลองของฉันมีลักษณะเช่นนี้ ... class Submodel: ObservableObject { @Published var count = 0 } class AppModel: ObservableObject { @Published var submodel: Submodel = Submodel() } และมุมมองของฉันดูเหมือนนี้ ... struct ContentView: View { @EnvironmentObject var appModel: AppModel var body: some View { …
18 ios  swift  swiftui  combine 

2
วิธีการอัพเดต @FetchRequest เมื่อมีการเปลี่ยนแปลง Entity ที่เกี่ยวข้องใน SwiftUI
ใน SwiftUI ViewฉันมีListอยู่บนพื้นฐานของ@FetchRequestการแสดงข้อมูลของPrimaryนิติบุคคลและผ่านความสัมพันธ์ที่เชื่อมต่อSecondaryนิติบุคคล ViewและListปรับปรุงอย่างถูกต้องเมื่อฉันเพิ่มใหม่Primaryนิติบุคคลกับนิติบุคคลใหม่รองที่เกี่ยวข้อง ปัญหาคือเมื่อฉันอัปเดตSecondaryรายการที่เชื่อมต่อในมุมมองรายละเอียดฐานข้อมูลจะได้รับการอัพเดต แต่การเปลี่ยนแปลงจะไม่สะท้อนให้เห็นในPrimaryรายการ เห็นได้ชัด@FetchRequestว่าไม่ได้รับการกระตุ้นจากการเปลี่ยนแปลงในมุมมองอื่น เมื่อฉันเพิ่มรายการใหม่ในมุมมองหลักหลังจากนั้นรายการที่เปลี่ยนแปลงก่อนหน้านี้จะได้รับการปรับปรุงในที่สุด ในฐานะที่เป็นวิธีการแก้ปัญหาฉันยังปรับปรุงคุณลักษณะของPrimaryกิจการในมุมมองรายละเอียดและการเปลี่ยนแปลงที่เผยแพร่ไปยังPrimaryมุมมองอย่างถูกต้อง คำถามของฉัน: ฉันจะบังคับให้อัปเดตข้อมูลทั้งหมดที่เกี่ยวข้อง@FetchRequestsใน SwiftUI Core Data ได้อย่างไร โดยเฉพาะเมื่อฉันไม่มีการเข้าถึงโดยตรงไปยังหน่วยงานที่เกี่ยวข้อง / @Fetchrequests? import SwiftUI extension Primary: Identifiable {} // Primary View struct PrimaryListView: View { @Environment(\.managedObjectContext) var context @FetchRequest( entity: Primary.entity(), sortDescriptors: [NSSortDescriptor(key: "primaryName", ascending: true)] ) var fetchedResults: FetchedResults<Primary> var body: some View …

3
SwiftUI วิธีสร้างอินสแตนซ์ PreviewProvider เมื่อ View ต้องการ @Binding ใน initializer
ด้วย SwiftUI (Xcode 11.1) ฉันได้ตั้งค่า Views บางส่วนด้วยการผูกสองทาง (โดยใช้@ ผูก ) การอัปเดตสองทางใช้งานได้ดี อย่างไรก็ตามฉันจะสร้างอินสแตนซ์ของมุมมองจาก PreviewProvider ได้อย่างไร ตัวอย่างเช่น: struct AddProjectView: View { @Binding public var showModal: Bool var body: some View { return VStack { Text("Add Project View") Button("Dismiss") { self.showModal = false } } } } ฉันทำสิ่งนี้ไม่ได้เพราะ "ความจริง" ไม่ใช่การผูก: struct AddProjectView_Previews: PreviewProvider …
10 xcode  swiftui  combine 

1
ฉันจะแกะค่าตัวเลือกภายในการรวมใน Swift ได้อย่างไร
ฉันกำลังสร้างแอปโดยใช้ SwiftUI และต้องการเปลี่ยนเป็นBinding<Value?>a Binding<Value> ในแอพของฉันมีสิ่งAvatarViewที่รู้วิธีการแสดงภาพสำหรับผู้ใช้เฉพาะ struct AvatarView: View { @Binding var userData: UserData ... } แอพของฉันมีContentViewสองสิ่งที่เป็นเจ้าของ: พจนานุกรมของผู้ใช้ตาม ID และรหัสของผู้ใช้ที่เราควรแสดงอวาตาร์ struct ContentView: View { @State var userById: Dictionary<Int, UserData> @State var activeUserId: Int var body: some View { AvatarView(userData: $userById[activeUserId]) } } ปัญหา: รหัสข้างต้นไม่รวมเพราะ$userById[activeUserId]เป็นประเภทBinding<UserData?>และจะใช้เวลาในAvatarViewBinding<UserData> สิ่งที่ฉันพยายาม ... $userById[activeUserId]!Binding<UserData?>ไม่ได้เพราะมันพยายามกับแกะ คุณสามารถแกะไม่OptionalBinding<Optional> $(userById[activeUserId]!)ไม่ทำงานสำหรับเหตุผลที่ฉันยังไม่เข้าใจ แต่ผมคิดว่าบางสิ่งบางอย่างเกี่ยวกับการแก้ไขที่รวบรวมเวลาเพื่อให้คุณไม่สามารถดูเหมือนจะคำนำหน้าโดยพลการแสดงออกด้วย$$
9 ios  swift  swiftui  combine 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.