-2

ObjectiveC の学習を始めたばかりで、問題があります。

for loop に変数があり、この変数は反復時に値を変更し、その値を取得したいと考えています。

ここで私の問題は変数が「名前」です:

1回目の繰り返し name='id' 2回目の繰り返し name='city' ...

for (i = 0; i < count; i++) {
name = ivar_getName(ivars[i]);
encode = ivar_getTypeEncoding(ivars[i]);
type = decode_type_string(encode);
if (strncmp(encode, "@", 1) == 0)
{
printf(" '%s', ", [[obj name*]UTF8String]);
}
else
{
printf(" %s ", name);
}
}

私の目標は、変数がその値によって解釈されることです。私の反復で変数名が「ID」に設定されている場合、私はしたい: [obj name] => [id obj] (私のインスタンスのID用)私の反復で変数名が「City」に設定されている場合、私はしたいhave: [obj name] => [obj City] (私のインスタンスの都市) (私の英語でごめんなさい)

4

4 に答える 4

0

Objective-C 文字列を出力する場合は、NSLog

NSLog(@" %@ ", [obj name]);
于 2013-05-26T12:09:22.543 に答える
0

Objective-c で文字列を出力するには、NSLog を使用できます。呼び出しは次のようになります

NSLog(@"%@",[obj name]);
于 2013-05-26T12:09:30.433 に答える
0

あなたの質問を正しく読んだかどうかはわかりませんが、動的に取得したいと思います。

例については、以下を参照してください。

Dw。

#import <Foundation/Foundation.h>
#import <objc/runtime.h>

@interface Frob : NSObject;
@property (strong) NSString * name, * bar, * fred;
@end
@implementation Frob
@end

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        Frob * frob = [[Frob alloc] init];
        frob.name = @"aName value";
        frob.bar = @"aBar value";
        frob.fred = @"aFred value";

        const char *lst[] = { "name", "bar", "fred" };
        for(int i = 0; i < sizeof(lst)/sizeof(char*); i++)
        {
            const char * nameStr = lst[i];

            SEL s = sel_getUid(nameStr);
            if (s) {
                NSString * val = [frob performSelector:s];
                NSLog(@"%s --> %@\n", nameStr, val);
                printf("%s --> %s", nameStr, [val UTF8String]);
            }
        }
    }
    return 0;
}
于 2013-05-26T12:31:08.437 に答える