Domanda

Non sono sicuro di questo fraseggio correttamente, ma fondamentalmente faccio questo nel mio principale applicazione delegato:

* Applicazione app = [[alloc applicazione] initWithApplication: fullPath]

La classe di applicazione ha un metodo che prende initWithApplication nel percorso di un app e quindi imposta le proprietà per AppPath, nome, ecc Poi aggiungo il nuovo oggetto "app" alle applicazioni NSMutableArray:

if (app) [applications addObject: app];

array Il contenuto del NSArrayController è legato alle applicazioni NSMutableArray, e poi i vari tasti (AppPath, nome, ecc) sono situati nel NSArrayController. Ho poi una vista tabella con varie colonne associate alle diverse proprietà, ad esempio una colonna per il nome, una colonna dal percorso, ecc.

Ho poi avere un pulsante di lancio che lancia l'applicazione che viene selezionato nella vista tabella. Per questo io uso questo codice:

Application *app = [applications objectAtIndex:[tableView selectedRow]];

Poi mi basta usare "app.appPath" come un riferimento al percorso dell'elemento selezionato. Questo funziona bene. Il problema arriva quando il contenuto vista tabella vengono filtrati utilizzando un filterPredicate. In sostanza si filtra tutte le applicazioni nella vista tavolo e lascia solo quelle con un nome che contiene la frase digitato nella casella di ricerca.

Il metodo di cui sopra non funziona perché ottiene l'indice dell'elemento nella vista tabella, e dal momento che tutti gli elementi non sono in vista tabella, il conteggio viene incasinato. Per esempio che ho un app chiamato MyApp.app che è elemento di indice 25 della matrice applicazioni.

Il codice sopra funziona bene perché tableView e l'array applicazioni hanno lo stesso numero di oggetti. Tuttavia filtrando i contenuti della visualizzazione della tabella crea una differenza nel numero di oggetti, e quindi lancia l'applicazione sbagliata.

Spero che la mia spiegazione non è troppo confusa, ma è difficile da spiegare. Qualsiasi modo per aggirare questo?

Grazie

È stato utile?

Soluzione

soluzione è stata abbastanza semplice per chiunque voglia sapere:

[[arrayController selezione] valueForKey: @ "AppPath"]

HTH

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