6
votes

Comment faire Nil produit une chaîne vide simple dans NsstringWithFormat?

NSString * result =[NSString stringWithFormat:@"http://%@/business/api/addOrEditBusiness.php?flag=%@&title=%@&building=%@&latitude=%@&longitude=%@&website=%@&street=%@&city=%@&country=%@%@&originalid=%@&inbuildingaddress=%@&email=%@&zip=%@%@&userid=%@%@",urlServer,strFlag,biz.Title.RobustURLEncodedString,biz.buildingName.RobustURLEncodedString,@(coord.latitude),@(coord.longitude),biz.Website.RobustURLEncodedString,biz.Street.RobustURLEncodedString, biz.City.Name.RobustURLEncodedString, biz.City.Country.Name.RobustURLEncodedString,strPhonesParameter,biz.ID.RobustURLEncodedString,biz.InBui

3 commentaires

Pourquoi votre vientystringifnil Méthode de catégorie renvoie nil ? Si vous l'écrivez, tels que: Retour String? String: @ ""; alors vous obtenez ce que vous voulez.


S'il appelle [anObject videystringifnil] et anObject est nul, la méthode renvoie nul.


@Sebastian bon point. Ce n'est pas un problème si videystringifnil est écrit en tant que fonction au lieu d'une méthode d'instance. Et c'est ce que votre réponse montre. :)


3 Réponses :


6
votes

Vous pouvez utiliser une fonction C à la place:

@interface NSString (EmptyIfNil)
+ (NSString*)emptyStringIfNil:(NSString*)s;
@end

@implementation NSString (EmptyIfNil)
+ (NSString*)emptyStringIfNil:(NSString*)s {
    return s ? s : @"";
}
@end


0 commentaires

7
votes

Je ne sais pas s'il y a un moyen plus facile, mais vous pouvez simplement mettre:

strName?:@""


1 commentaires

C'est une extension de la GCC (et donc clang l'a aussi).



0
votes

Essayez ceci xxx

sortie :: ==> 1 xxx < p> Sortie :: ==>

espoir, vous l'obtiendrez.

Merci.


0 commentaires