2016-12-07 3 views
0

Ich habe den folgenden Code:Wie strukturiere ich diese Daten besser?

class Book { 
    let title = "" 
    let description = "" 
    let ebookPath = "" 
    let featuredCategories = [FeaturedCategory]() 
    let authors = [Author]() 
    let publishers = [Publisher]() 
    //... 
} 

class FeaturedCategory { 
    let name = "" 
    let books = [Book]() 
} 

class Author { 
    let name = "" 
    let books = [Book]() 
} 

class Publisher { 
    let name = "" 
    let books = [Book]() 
} 


class Tag { 
    let name = "" 
    let books = [Book]() 
} 

Wie Sie oben aus dem Code sehen können, gibt es eine Menge Wiederholung ist. Dies wird noch hässlicher, wenn ich weitere Klassen mit den gleichen Variablen name und books hinzufügen. Was ist eine bessere Alternative?

Bearbeiten: Ich lade JSON von Firebase. Hier ist die JSON-Struktur:

enter image description here

...

enter image description here

+0

wäre gut, genauer in der Frage aufzunehmen. "Diese Daten" sind sehr vage. – Luke

+0

Haben Sie ein JSON für die oben genannten? –

+0

Bitte überprüfen Sie die Bearbeitung –

Antwort

2

Hmm diese Frage in vielerlei Hinsicht beantwortet werden kann, aber ich werde versuchen, meine Meinung über sie zu teilen.

Zuerst versuchen Sie, struct anstelle der class zu verwenden, weil auf diese Weise Sie flexibler in der Architektur sind.

Zweitens verwenden Sie zum Erstellen der Beziehungen.

Kleines Beispiel:

//Struct insted of class 
struct Book { 
    //Usage of the let in struct is good practice. 
    let title: String 
    let description: String 
    let ebookPath: String 
    let featuredCategories: [FeaturedCategory] 
} 

//Base protocol 
protocol HasBooks { 
    var name: String { get } 
    var books: [Book] { get } 
} 

//Strcut that reuqires to implement name and books. 
struct FeaturedCategory : HasBooks { 
    var name = "" 
    var books = [Book]() 
} 
+0

Ich würde einen Namen wie HasBooks für das Protokoll wählen. Etwas, das sowieso beschreibender ist als BaseData. – Fogmeister

+1

Ich bearbeite meine Antwort Sie haben richtigen Vorschlag. –

+0

Dies ist eine bessere Verbesserung, aber was ist, wenn ich, sagen wir, 20 Strukturen mit den gleichen genauen Daten habe? Wäre das nicht ein bisschen zu seltsam? –

Verwandte Themen