0

を使用すると動作しますNSLogが、動作しませんprintfprintfのすべての要素がsetA1行に表示されるので、使用したいと思います。

#import <Foundation/Foundation.h>

#define INTOBJ(v) [NSNumber numberWithInteger: v]

@interface NSSet (Printing) 
-(void) print;
@end

@implementation NSSet (Printing)
-(void) print {
    for (NSNumber *element in self) 
        printf("%li", (long) [element integerValue]);
}

@end

int main (int argc, char *argv[]) {
    @autoreleasepool {
        NSMutableSet *setA = [NSMutableSet setWithObjects:INTOBJ(3), INTOBJ(10), INTOBJ(1), INTOBJ(5), nil];

        [setA print];
    }
    return 0;
}
4

3 に答える 3

0

-longValue代わりに試してみ-integerValueてください。暗黙的にキャストする必要がありますが、わかりません...

于 2012-08-01T18:56:51.820 に答える
0

NSLogは本質的に異なるバージョンのprintfであり、Objective Cのものを許可しますが、printfはObjectiveCの素材を処理できません。

printfメソッドが機能しない場合は、これが問題である可能性があります。

于 2012-08-01T18:40:54.360 に答える
-1

最初にオブジェクトであるNSNumberからNSIntegerに変換してから、printfステートメントを使用してコンソールに出力できます。すべての整数が1行に表示されます。

for(NSNumber *element in setA)
{
    NSInteger num = [element intValue];
    printf("%li", (long)num);

}
于 2012-08-01T19:18:31.003 に答える