2015-05-07 52 views
1

我最近開始使用失言(http://fauxpasapp.com/),併爲我的項目,我得到以下警告多次:爲什麼我不應該使用[NSDictionary objectForKey:]?

老,冗長的Objective-C語法

-[NSDictionary objectForKey:] is called. Consider using an Objective-C subscript expression instead. 

我不確定下標表達是什麼,我沒有太多的運氣找到它。我很好奇,如果有人在這裏可以幫助。

謝謝!

+2

像本作中找到:'myDictionary [@「的myKey」]' – matt

+0

難道可能被提及使用文字? https://mikeash.com/pyblog/friday-qa-2012-06-22-objective-c-literals.html –

+0

相反,您只需在下標中給出'key',就像'dict [key]'一樣。這是下標表達。 – sasquatch

回答

3

沒有性能差異,只是字面語法更清晰,不夠詳細,並且已經可用幾年了。

如果當前的代碼如下:

id var = [dictionary objectForKey:@"key"]; 

將其替換爲:

id var = dictionary[@"key"]; 
1

您想了解的Objective-C 2.0。最好的辦法是直來直去的來源:

http://clang.llvm.org/docs/ObjectiveCLiterals.html

正如你所看到的,引入了一些語言特性:NSNumber的文字和「拳」的表達,用的NSArray和NSDictionary中的下標一起(和你自己的班級,如果你喜歡)。這被認爲是「現代」的方式。

Xcode會將您的代碼重構爲「現代Objective-C」(請參閱​​編輯>重構),因此您可以在不做任何工作的情況下實現代碼的現代化!

3

那麼通常你會寫這樣的事情:

NSDictionary *dictionary = [NSDictionary dictionaryWithObject:[NSNumber numberWithInteger:42] forKey:@"foo"]; 
id value = [dictionary objectForKey:@"foo"]; 

而現在你會寫是這樣的:

NSDictionary *dictionary = @{@"foo": @42}; 
id value = dictionary[@"foo"]; 

其中,我想你一定會同意的,是一個非常簡單並且更好看看。

有關對象的下標一些不錯的信息可以在NSHipster

相關問題