10
votes

Déclarez une propriété en lecture seule à Swift pour PLFLATION DE PAYSE

J'utilise parse objet Store dans mon application iOS et j'ai Créé une sous-classe personnalisée pour mon objet d'analyse, qui ressemble quelque peu à ceci:

@NSManaged private(set) var relatedThings: PFRelation


3 commentaires

Je n'ai pas cet avertissement


Il y a une chance qu'il s'agisse d'un problème spécifique Swift 2.0, mais je ne peux pas confirmer que pour le moment. Mettra à jour la question une fois que je fais.


Ce que je veux dire, c'est que je n'ai pas cet avertissement dans mon projet d'analyse dans XCode7 Beta 5 avec Swift 2.0


3 Réponses :


1
votes

Voici comment vous feriez une propriété de données de base en lecture seule avec Swift. Je ne sais pas si c'est ce que l'analyse est la recherche, mais c'est comme ça que les choses fonctionneraient dans Swift.

Bien que Xcode génère des sous-classes NsmanagedObject avec @nsmanagagage sur le attributs, ce n'est pas réellement requis. C'est bien de remplacer les attributs @nsmanaged avec des propriétés calculées Swift équivalentes utilisant des accessoires primitifs de données de base pour obtenir / définir les valeurs de propriété. Vous feriez la propriété efficacement en lecture seule en n'incluant pas un seigter.

qui signifierait remplacer votre relatedthings de la déclaration de type: xxx

Ce obtenez le code fonctionnera comme si vous utilisiez @nsmanageagage . Mais en n'ayant pas un défini , la propriété est en lecture seule.


2 commentaires

Je me rends compte que vous pouvez définir un var calculé avec seulement un get. Ma question était en ce qui concerne la définition d'un Var comme Get uniquement sans ajouter tout cela, ce qui semble être un code de désesse.


Pas si vous utilisez des données rapides et de base.



2
votes

La réponse de Tom n'a pas fonctionné pour moi, comme pfobject n'est pas une sous-classe de < code> nsmanagedObject , il n'entrent donc pas le willAccessvalueforKey , primidivalueforkey et didacessvalueforkey Toutefois, en utilisant pfobject s propre ObjectorKey est la solution équivalente correcte: xxx

Vous devez toujours avoir la force de force Valeur Cette méthode revient à pfrelation ou, selon la version de Tom, tournez le type de la propriété en une option facultative.


1 commentaires

Voir la réponse d'Igenio pour une réponse correcte, cette réponse a provoqué une erreur lors de la tentative de faire quelque chose avec le PFLLATION.



3
votes

Maintenant, vous devez utiliser:

var relatedThings: PFRelation! {
    return relationForKey("relatedThings")
}


0 commentaires