Skor Tablosu Puanlarını coredata'da saklayın?

0

Soru

Uygulamamda Coredata'da(nihai CloudKit işlevselliği ile) bir afiş saklamaya çalışıyorum ve bunu en iyi nasıl yapacağım konusunda kafam karıştı.

Kullanıcı birden fazla afiş oluşturabilir ve kaydedebilir. Her skor tablosunun bir oluşturma tarihi, adı, kimliği ve bu skor tablosunun tüm puanları olacaktır. Çekirdek veri modelinde (aşağıda), tüm bunları leaderboard varlığına öznitelik olarak ekledim ve score özniteliği için tanımsız olarak bıraktım. Bunu bir dizi yapmayı düşünüyordum. score struct. Ancak, yapmaya çalıştığımda, newLearboard.scores = [Score]() in my Persistence.swift dosya Bana skoru eklemem gerektiği söylendi as NSObject. Bunu yapmanın doğru yolu bu mu yoksa skor tablosunu eklemeye/görüntülemeye gittiğimde bu istenmeyen sonuçlar doğuracak mı?

Puan, ad, değer vb.Gibi birkaç alana sahip bir yapıdır.

Sonunda Skor dizisini swift koleksiyonları paketinden bir orderedset'e de dönüştürebilirim. Bu başka sorunlar yaratacak mı?

enter image description here

cloudkit core-data swift swiftui
2021-11-22 17:20:15
1

En iyi cevabı

0

Çekirdek Veriler, Swift yapılarının nasıl saklanacağını bilmiyor. Xcode yardım etmeye çalışıyor ama gerçekten başarılı olamıyor. Kullanım as NSObject istediğiniz şeyi yapmaz, çünkü bir yapı bir yapıya yazılamaz. NSObject.

Temel Veri yolu, modele ikinci bir varlık eklemek olacaktır Score ve sonra bir Çekirdek Veri ekle-birçok ilişkiden Leaderboard -e doğru Score. Sonra her biri Score bir olurdu NSManagedObject, bir alt sınıfı olan NSObject.

Bir örneğe dönüştürebilirseniz, Çekirdek Verilere herhangi bir şey koymak da mümkündür Data ilk. Eğer kullandıysan JSONEncoder puan dizinizi aşağıdakilere dönüştürebilirsiniz Data ve kullanım Data nitelik. Puanları her güncellediğinizde kodlamak için kod yazmanız ve puanları her okuduğunuzda kod çözmeniz gerekir. Bunu yapmaya karar verirseniz, aklınızda bulundurun JSONEncoder kullanma Codable, Codable çekirdek Verilerle yararlı değildir (kullanabilir NSCoding ama bu aynı şey değil).

2021-11-22 18:08:49

Verilere Dönüştürme, dizeye veya bunun gibi bir şeye dönüştürülmesi gereken güvenli kodlama uyarı mesajını verir.
lorem ipsum

Bu benim deneyimimle uyuşmuyor. Tarif ettiğim şey içermiyor NSCoding hiç de, güvenli kodlama hakkında basacağı mesajlar gerçekleşmez.
Tom Harrington

Belki de farklı taktiklerden bahsediyoruz. Bahsettiğim şey, yukarıda bağladığım soruda kullanılan stil. Verileri kullanan bu güvenli kodlama mesajı, dönüştürülebilir kullanılarak giderek daha fazla ortaya çıkıyor. Tam hata iletisi yorumlardadır.
lorem ipsum

Özellikle dönüştürülebilir özelliklerden kaçınıyordum-ki bu JSONEncoder zaten işe yaramazdı.
Tom Harrington

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................