理解语法(将NSInteger转换为NSNumber)

时间:2014-01-16 10:17:28

标签: objective-c core-data

我对我正在学习的教程感到有点困惑。有一行代码如下所示:

location.photoId  = @([Location nextPhotoId]);

我不明白@()语法的含义,它是什么?本声明中使用了变量的定义:

@interface Location : NSManagedObject <MKAnnotation>
 Location *location = nil;

@property (nonatomic, retain) NSNumber *photoId;

在位置类中声明。

+(NSInteger)nextPhotoId{

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSInteger photoId = [defaults integerForKey:@"PhotoId"];
                         [defaults setInteger:photoId+1 forKey:@"PhotoId"];
                         [defaults synchronize];
                         return photoId;
}

位置类中的类方法。

也许没有必要在这里粘贴代码,但我想我应该让它更清楚。我只想知道@([Location nextPhotoId])在这种情况下的意思,以及@()代表什么?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

@([Location nextPhotoId])等同于[NSNumber numberWithInt:[Location nextPhotoId]]

@()是用于定义文字的语法。

方法[Location nextPhotoId]返回一个整数,并将此整数设置为NSNumber(location.photoId),使用此语法。

参考:http://cocoaheads.tumblr.com/post/17757846453/objective-c-literals-for-nsdictionary-nsarray-and