Πώς μπορώ να χρησιμοποιήσω NSScanner να αναλύσει μια καρτέλα οριοθετημένο κορδόνι στο κακάο;

ψήφοι
0

Έχω μια διαδικτυακή υπηρεσία που επιστρέφει δεδομένα καρτέλα οριοθετημένο (δείτε δείγμα κατωτέρω).

Πρέπει να αναλύσει αυτό σε μια σειρά ή παρόμοια ώστε να μπορώ να δημιουργήσετε μια προβολή πλοήγησης του.

Έχω καταφέρει να εκτελέσει το αίτημα ιστού και θα μπορούσε να αναλύσει ένα αρχείο XML, αλλά οι γνώσεις μου Objective-C είναι μικρός.

433 Eat
    502 Not Fussed
    442 British
    443 Chinese
    444 Dim Sum
    445 Fish
    446 French
    447 Gastropubs
    449 Indian
    451 Italian
    452 Japanese
    453 Middle Eastern
    454 Pan-Asian
    455 Pizza
    456 Spanish
    457 Tapas
    458 Thai
    459 Vegetarian
434 Drink
    501 Not Fussed
    460 Bars 
    461 Pubs
Δημοσιεύθηκε 09/12/2008 στις 15:43
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
7

Δεν είμαι σίγουρος ότι καταλαβαίνω μορφή σας ακριβώς (εμφανίζει λίγο περίεργο για μένα), αλλά ο ευκολότερος τρόπος να γίνει αυτό είναι with - (NSArray *)componentsSeparatedByString:(NSString *)separatorτο οποίο είναι μια μέθοδος στην NSString τάξη ... παράδειγμα:

NSArray *components = [myString componentsSeperatedByString:@"\t"];

Αυτή επιστρέφει NSArrayαπό NSStrings, ένα για κάθε τομέα καρτέλα οριοθετημένο. Αν οι διαχωριστές νέα γραμμή είναι σημαντικό που μπορείτε να χρησιμοποιήσετε - (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator(επίσης NSString) να χωρίσει χρησιμοποιώντας περισσότερα από ένα είδος οριοθέτησης.

Απαντήθηκε 09/12/2008 στις 17:58
πηγή χρήστη

ψήφοι
4

Είχα την αίσθηση περισσότερο από μια επίπεδη λίστα ήθελε. Αν θέλετε μια πολυδιάστατη δομή που μπορείτε να κάνετε κάτι σαν αυτό:

NSArray *lines = [data componentsSeparatedByString:@"\n"];
for (NSString *line in lines) {
    NSArray *fields = [line componentsSeparatedByString:@"\t"];
     // Do something here with each two-element array, such as add to an NSDictionary or to an NSArray (to make a multidimensional array.)
}
Απαντήθηκε 09/12/2008 στις 18:13
πηγή χρήστη

ψήφοι
2

Είσαι στο σωστό δρόμο με NSScanner. Θα χρειαστείτε τουλάχιστον δύο σαρωτές: Ένα για να ανιχνεύσει τις γραμμές από το σύνολο εγχόρδων εισόδου, και ένα σαρωτή για κάθε γραμμή. Ρυθμίστε το σαρωτή όλη εισόδου για να παρακάμψετε μόνο κενό διάστημα (όχι νέες γραμμές), τότε:

  1. Σάρωση μίας γραμμής (συμβολοσειρά πηγή μέχρι το τέλος της γραμμής).
  2. Δημιουργήστε ένα σαρωτή και να το σαρώσετε καρτέλες από τη γραμμή.
  3. Μετρήστε τις καρτέλες που σαρώνεται. Αυτό είναι το επίπεδο εσοχής σας.
  4. Το υπόλοιπο της γραμμής είναι ο αριθμός εισόδου και το όνομα. Θα μπορούσατε να σαρώσετε τη γραμμή μέχρι κενό για να διαχωρίσει τον αριθμό και το όνομα, ή αφήστε τους μαζί, ανάλογα με το τι χρειάζεστε.
  5. Πηγαίνετε πίσω στο βήμα 1.

Για συγκεκριμένα ονόματα μέθοδο, δείτε την αναφορά τάξη NSScanner και την αναφορά της κατηγορίας NSCharacterSet .

Απαντήθηκε 09/12/2008 στις 18:15
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more