/ / Generuj unikalną nazwę za każdym razem jak zachowanie "struktury folderów Windows" - cel-c

Generuj unikatową nazwę za każdym razem, jak zachowanie "struktury folderów Windows" - cel-c

Chcę utworzyć logikę struktury folderów, jakwindows. Korzystam z bazy danych SQlite. Chcę generować unikalną nazwę za każdym razem. Dla np. jeśli użytkownik wprowadzi tekst o nazwie "Nowy". I jeśli ponownie wprowadzi to samo imię "Nowy", wtedy powinno być Nowe (1). jeśli ponownie wprowadzi tę samą nazwę "Nowy", wówczas powinien to być "Nowy (2)". Jeśli użytkownik usunie wpis "Nowy (1)" i wprowadzi "Nowy", wówczas "Nowy (1)" powinien zostać umieszczony pomiędzy "Nowy" i "Nowy (2)".

Czy ktokolwiek mógłby sugerować taką logikę? Czy docenia się każdą pomoc? Z góry dziękuję Tejas

Odpowiedzi:

0 dla odpowiedzi № 1

Uważam, że będziesz mieć bazę danych z id i foldername jako pola. Trzeba tylko pobrać wszystkie rekordy z bazy danych. W miejscu użycia zapytania lubić operator. Po uzyskaniu listy przejdź do pętli i dodaj nowy wpis porównując numer. Spróbuj tego.


0 dla odpowiedzi nr 2

Oto logika, której używam, aby zrobić coś podobnego w aplikacji:

  1. Zadeklaruj NSString nazywa prefix i NSInteger nazywa number.
  2. Sprawdź, czy twoje imię i nazwisko ma numer na końcu:
    • Jeśli tak, ustaw number do wartości tej liczby i prefix na nazwisko bez numeru.
    • Jeśli nie, ustaw number do 1 i prefix na imię.
  3. Pętla od 1 do pewnej maksymalnej liczby, wykonując następujące czynności:
    1. Zbuduj a proposedName z bazy i numeru:
      • Gdyby number jest 1, użyj gołego prefix.
      • W przeciwnym razie połącz prefix i number w formacie, który chcesz wygenerować.
    2. Sprawdź, czy proposedName jest już w użyciu.*
      • Jeśli jest używany, zwiększaj number i znowu pętlę.
      • Jeśli nie jest używany, proposedName to twoje nowe imię.

Biorąc pod uwagę, że korzystasz z bazy danych SQLite, możesz nieco przyspieszyć, pobierając nazwy zaczynające się od prefiksu i ładując je do NSMutableSet. To będzie szybsze niż wykonanie zapytania dla każdej indywidualnej nazwy.

* Kiedy wykonasz ten test, prawdopodobnie powinieneś wykluczyć obiekt, na który już patrzysz. Pozwoli ci to spróbować "zjednoczyć" nazwę istniejącego obiektu, nie zmieniając go.