-1
votes

Comment ajoutez-vous des intervalles hebdomadaires, mensuels et annuels à une date dans une boucle?

Je suis également ajouté à un tableau avec une boucle pour ajouter au domaine.

for _ in 0...7 {
                datePicked = datePicked + 24*60*60
            }


6 commentaires

Comment savez-vous quoi augmenter la date?


La question est assez vague puisque nous ne savons pas à quel point le montant, le nom, le satellisked, etc. est peuplé. Cela étant dit, ce code, tel quel, créera un tas d'objets de transaction en double () avec toutes leurs propriétés identiques. Ce n'est probablement pas ce que vous voulez, mais peut-être que c'est? Pouvez-vous clarifier? De plus, nous ne savons pas ce que vous voulez faire avec la propriété saintpicked. Qu'est-ce qu'un intervalle hebdomadaire et mensuel ? Comment une seule propriété serait-elle un et par ex. Une seule propriété occupe une hebdomadaire et un intervalle mensuel?


@Joakim, c'est ma première application et j'ai eu des difficultés à mettre en œuvre cette fonctionnalité. Je souhaite que l'utilisateur puisse sauvegarder une transaction et qu'il ait répété ce qu'ils choisissent. S'ils sont payés toutes les 2 semaines ou les 1er et 15e, ils devraient pouvoir faire cela se produire sans avoir à le faire manuellement 100 fois. Quelque chose de similaire à [TBrePeatPicker]: Cocoapods.org/pods/tbrereeatPicker


@Jay Chaque transaction devrait avoir une date unique. Exemple: l'utilisateur dispose d'une charge de téléphone portable sur leur compte le 12 juin, 12 juillet, 12 août ... et avez-la répéter pendant 10 ans ou quelque chose. Tout le reste sur la transaction (catégorie, montant, nom) est identique à l'exception de la date. J'aime TBrePeatPicker sur Cocoapodes, mais je ne peux pas installer la version Swift 4. Je viens de commencer à coder il y a quelques mois et j'essaie de déterminer comment ajouter cette fonctionnalité.


Je ne suis pas sûr d'où la difficulté est exactement. Lorsque l'utilisateur choisit le 12 juin, répétez tous les mois pendant un an, créez 12 transactions avec la date associée 6/6/12 7/6/6/12, etc. Cela fonctionne-t-il?


@Jay La difficulté est que je suis très vert et que les boucles sont encore difficiles pour que je puisse comprendre. Je n'ai jamais écrit une seule ligne de code avant quelques mois. J'ai trouvé une solution et posté la réponse sur cette page. Je ne sais pas si c'est le meilleur moyen, mais cela fonctionnera pour le moment. Merci pour l'aide!


3 Réponses :


1
votes

Si j'ai bien compris votre question, vous pouvez essayer ceci:

for _ in 1...numberOfTransactionsToAdd {
    let addedTransaction = Transaction()

    addedTransaction.transactionAmount = amount
    addedTransaction.transactionName = name
    addedTransaction.transactionDescription = desc
    addedTransaction.transactionCategory = category
    
    // specify your date components (add month, day, whatever you need)
    var dateComponent = DateComponents() 
    dateComponent.day = 1
    dateComponent.month = 2
    // add the date components to `datePicked`
    let newDate = Calendar.current.date(byAdding: dateComponent, to: datePicked)!
    // set `transactionDate` to your new date
    addedTransaction.transactionDate = newDate

    transactionArray.append(addedTransaction)
}


2 commentaires

C'est très proche. Mais il définit simplement toutes les transactions au nouveauDate. Peut-être que j'ai besoin de mettre en œuvre une autre en boucle? Je travaille sur une solution ...


@Briscoleg Vous n'avez pas mentionné Comment voulez-vous le faire. Pour vous aider, nous avons besoin de plus d'informations. Si vous souhaitez simplement augmenter chaque date d'un jour (ou par un intervalle constant), vous pouvez ajouter le paramètre index à la boucle de la boucle.



0
votes

Voici comment j'ai résolu ce dilemme:

J'ai utilisé swiftdate https://cocoapods.org/pods / SwiftDate pour faciliter le fonctionnement avec les dates.

J'ai ajouté un mois à standingpicked à la fin de la boucle, après transactionarray.append. De cette façon, la première date de transaction est à la date cueillie.

Voici ce que le code ressemble à: xxx

Je prévois d'étendre la fonctionnalité à Rendez-le plus polyvalent, mais c'est ce qui a fonctionné pour moi (pour l'instant).


1 commentaires

Nous ne savons pas quel type de var standardpicked est. C'est génial de travailler pour vous, mais ce sera inutile pour les autres sans plus d'informations. Pouvez-vous mettre à jour pour le rendre plus complet? Y compris votre objet de royaume serait génial.



1
votes

Il existe une réponse existante, mais elle repose sur un module tiers, ce qui n'est pas une mauvaise chose, mais s'il ne devait pas être mis à jour à l'avenir, cela invaliderait la réponse. De plus, les objets utilisés ne sont pas clairement définis.

TL; DR - Il n'y a pas besoin d'une liste ou d'une matrice. Écrivez les transactions comme elles sont créées et peuplées.

Détail:

Voici une réponse rapide plus complète, en commençant par l'objet TransactionClass RealM qui a une commodité init pour la date du transaction ainsi qu'une clé primaire qui est généralement une bonne idée d'avoir sur des objets. xxx

puis une fonction qui crée un certain nombre de transactions récurrentes basées sur la catégorie de pickedDate xxx

et la sortie lorsqu'il est imprimé xxx


0 commentaires