Comment puis-je créer une classe Objective-C avec des variables de niveau classe comme celle-ci Java?
public class test
{
public static final String tableName = "asdfas";
public static final String id_Column = "_id";
public static final String Z_ENT_Column = "Z_ENT";
}
Je veux y accéder sans créer d'instance, comme:
String abc = test.tableName;
Il semble que vous souhaitiez créer des constantes (puisque vous utilisez final
dans votre question). Dans Objective-C, vous pouvez utiliser extern
pour cela.
Faites quelque chose comme ça:
1) Créez une nouvelle classe Objective-C nommée Constantes.
2) Dans le fichier d'en-tête (.h):
extern const NSString *SERVICE_URL;
3) Dans le fichier d'implémentation (.m):
NSString *SERVICE_URL = @"http://something/services";
4) Ajoutez #import "Constants.h"
à n'importe quelle classe où vous souhaitez l'utiliser
5) Accédez directement en tant que NSString *url = SERVICE_URL;
Si vous ne voulez pas créer de constantes et souhaitez simplement utiliser static
dans Objective-C, vous ne pouvez malheureusement utiliser que static
dans le fichier d'implémentation (.m). Et ils sont accessibles directement sans préfixer le nom de la classe.
Par exemple:
static NSString *url = @"something";
J'espère que ça aide.
Essayez-le ....
static NSString *CellIdentifier = @"reuseStaticIdentifier";
Vous pouvez accéder à la valeur directe en utilisant la propriété de synthèse
ou vous pouvez utiliser NSUserDefaults pour stocker et récupérer la valeur
La description
@interface MyClass : NSObject
+(NSString *)myFullName;
@end
La mise en oeuvre :
#import "MyClass.h"
@implementation MyClass
static NSString *fullName = @"Hello World";
+(NSString *)myFullName{
return fullName;
}
@end
Utilisation:
#import "MyClass.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
NSLog(@"%@",[MyClass myFullName]); //no instance but you are getting the value.
}
@end
J'espère que j'ai aidé.
Vous devez utiliser une méthode de classe pour accéder à tout ce qui peut être appelé sans créer d'instance.
@interface MyClass : NSObject
+(NSString *)myFullName;
@end
La mise en oeuvre :
#import "MyClass.h"
@implementation MyClass
static NSString *fullName=@"anoop vaidya";
+(NSString *)myFullName;{
return fullName;
}
@end
Comment utiliser:
#import "MyClass.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
NSLog(@"%@",[MyClass myFullName]); //no instance but you are getting the value.
}
@end
Pourrait être fait comme ça:
@interface Test
{
static NSString *tableName;
}
+(NSString *) getTableName;
@end
@implementation Test
+ (NSString *)getTableName
{
return tableName;
}
@end
Et puis vous le récupérez:
NSString *name = [Test getTableName];
Je pense que la meilleure façon et la plus utilisée est d'utiliser des énumérations telles que
enum{
GSPAYMENT_METHOD_CARD = 1,
GSPAYMENT_METHOD_CASH = 2,
GSPAYMENT_METHOD_VOID = 3
};
typedef NSUInteger PaymentMethodType;
Juste avant le @interface GSPaymentMethod
De cette façon, vous pouvez utiliser ces constantes n'importe où en incluant simplement le .h
fichier
Par exemple
[self newPayment:GSPAYMENT_METHOD_CASH]
Objective-C n'a pas de variables de classe
Je recommanderais de mettre la NSString statique dans le fichier d'implémentation de votre classe et de fournir des méthodes de classe pour y accéder
@implementation MyClass
static NSString* str;