Domanda

Sto cercando di creare un plist modificabile dall'utente in cui l'utente può memorizzare una routine di allenamento creata su misura che includa stringhe a cui fa riferimento un altro data.plist nel pacchetto dell'app.

Presumo che NSCoding sia il modo migliore per farlo. Finora ho configurato l'interfaccia come barra di navigazione e visualizzazione tabella.

Voglio che sia vuoto come impostazione predefinita e l'utente deve premere il "+" che si trova in alto a destra nella barra di navigazione. Quindi potrebbe inserire un nome per una voce in un array, ad esempio petto giorno o giorno bicipite. E all'interno di quella matrice, ci sarà un dizionario o un'altra serie di stringhe degli esercizi particolari per quel giorno, ad esempio panca o curl bicipite.

Questo plist deve essere modificabile, quindi andrà nella cartella dei documenti degli utenti e non nel bundle dell'app.

Esempio:

La serie superiore è composta da Chest Day, Back Day, Leg Day. All'interno del dizionario Chest Day, includi panca, trazione al petto, flessioni, ecc.

Aggiorna:

Aggiunta di questo metodo per cercare file di routine;

    -(void)loadData
{
    if(YES)
    {
        NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        NSString* routineFile = [documentsPath stringByAppendingPathComponent:@"routine.plist"];
        BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:routineFile];
    }
    else
    {
        //load file
    }
}
È stato utile?

Soluzione

NSCoding è il protocollo utilizzato da NSArchiver, NSKeyedArchiver e così via, non per serializzare un array in un elenco di proprietà.

Dimentica l'idea che l'utente stia per modificare un elenco di proprietà. L'utente modificherà i dati nella tua app: il fatto che sia archiviato come elenco di proprietà è solo un dettaglio dell'implementazione. All'avvio della tua app, leggi i dati memorizzati nel file di dati. L'utente lo modifica, lo guarda, qualunque cosa. Ad un certo punto più tardi, forse dopo ogni modifica, forse appena prima che l'app si chiuda, riscrivi i dati nel file. Poiché si tratta di un elenco di proprietà, non preoccuparti di aggiornare il file; hai già tutti i dati, quindi scrivi un elenco di proprietà completamente nuovo e poi usa quel file per sostituire quello vecchio.

Forse mi sbaglio e tu intendi davvero che l'utente modifichi manualmente l'elenco delle proprietà, con un editor di testo. Questo potrebbe essere un errore. È fantastico che gli elenchi di proprietà siano leggibili dagli utenti, ma chiedere agli utenti di modificare manualmente i file di dati non elaborati è un forte segnale che la tua app non funziona. L'intero scopo della tua app è tenere traccia di queste informazioni per l'utente; se volessero utilizzare un editor di testo per gestirlo, non avrebbero bisogno della tua app. Quindi, detto questo, spero di non sbagliarmi. ;-)

Altri suggerimenti

Non penso che userei NSCoding per questo: se tutto ciò con cui lavori sono oggetti plist standard come NSArray, NSDictionary e NSString, il metodo -writeToFile: atomically: dell'array superiore è un modo semplice da fareil lavoro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top