18

この Java クラスのようなクラスレベルの変数を持つ Objective-C クラスを作成するにはどうすればよいですか?

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";

}

次のように、インスタンスを作成せずにそれらにアクセスしたい:

String abc = test.tableName;
4

6 に答える 6

38

定数を作成したいようです(final質問で使用しているため)。Objective-C では、そのために使用できますextern

次のようにします。

1) Constants という名前の新しい Objective-C クラスを作成します。

2) ヘッダー (.h) ファイル内:

extern const NSString *SERVICE_URL;

3) 実装 (.m) ファイル:

NSString *SERVICE_URL = @"http://something/services";

#import "Constants.h"4)使用したいクラスに追加します

5) として直接アクセスNSString *url = SERVICE_URL;


定数を作成せず、単に Objective-C で使用したい場合は、残念ながら実装 (.m) ファイルでstaticしか使用できません。staticまた、クラス名のプレフィックスを付けずに直接アクセスできます。

例えば:

static NSString *url = @"something";

これが役立つことを願っています。

于 2013-05-02T05:40:02.557 に答える
31

それを試してみてください....

static NSString *CellIdentifier = @"reuseStaticIdentifier";

合成プロパティを使用して直接値にアクセスする
か、値の保存と取得に NSUserDefaults を使用できます

説明

@interface MyClass : NSObject
+(NSString *)myFullName;
@end

実装 :

#import "MyClass.h"

@implementation MyClass
static NSString *fullName = @"Hello World";

+(NSString *)myFullName{
  return fullName;
}
@end

使用する:

#import "MyClass.h"

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
  NSLog(@"%@",[MyClass myFullName]); //no instance but you are getting the value.
}

@end

私が助けてくれることを願っています。

于 2013-05-02T05:29:27.477 に答える
10

インスタンスを作成せずに呼び出すことができるものにアクセスするには、クラス メソッドを使用する必要があります。

@interface MyClass : NSObject
+(NSString *)myFullName;
@end

実装 :

#import "MyClass.h"

@implementation MyClass
   static NSString *fullName=@"anoop vaidya";

+(NSString *)myFullName;{
    return fullName;
}
@end

使い方:

#import "MyClass.h"

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
    NSLog(@"%@",[MyClass myFullName]); //no instance but you are getting the value.
}

@end
于 2013-05-02T05:36:39.700 に答える
2

そのようにすることができます:

@interface Test
 {
   static NSString *tableName;
 }

+(NSString *) getTableName;
@end

@implementation Test
+ (NSString *)getTableName
 {
    return tableName;
 }
@end

そして、それを取得します:

NSString *name = [Test getTableName];
于 2013-05-02T05:35:11.773 に答える
2

Objective-C にはクラス変数がありません

静的 NSString をクラスの実装ファイルに入れ、それにアクセスするためのクラス メソッドを提供することをお勧めします。

@implementation MyClass

static  NSString* str;
于 2013-05-02T05:30:39.243 に答える
2

最良の方法であり、より使用されるのは、次のような列挙型を使用することだと思います

enum{
    GSPAYMENT_METHOD_CARD = 1,
    GSPAYMENT_METHOD_CASH = 2,
    GSPAYMENT_METHOD_VOID = 3
};
typedef NSUInteger PaymentMethodType;

直前に@interface GSPaymentMethod

.hこのようにして、ファイルを含めるだけでこれらの定数をどこでも使用できます

例えば

[self newPayment:GSPAYMENT_METHOD_CASH]

于 2016-05-13T15:23:59.900 に答える