私は現在CoreDataに由来するオブジェクトのNSArray
を持っています - identifier
という名前のプロパティの1つはNSNumber
です。コード内でいくつかの比較を行い、NSNumber
をNSString
に変換する必要があります。NSNumber * to CoreData
私はしかし、私は、コードのこれら2つの違いは何であるか疑問に思って、仕事にこれを持っている:この第二のスニペットはしませんいくつかの理由について
NSNumber * arrayValueNum = [coreArray[i] identifier];
NSString * arrayValue = [arrayValueNum stringValue];
と
NSString * test = [[coreArray[i] identifier] stringValue];
コンパイルし、最初のものが作成されます。
エラー:
no visible @interface for 'NSString' declares the selector 'stringValue'
は、彼らがNSNumber *
値ではなく、それ自身の変数であることの中括弧であることを除いて、同じではありませんか?
簡単な質問:2番目のスニペットでどのような方法で 'identifier'を実行するのですか(alt +クリックした場合)?私は、[[((MyCoreDataClass *)coreArray [i] identifier] stringValue] 'が働くかもしれない、あるいは[(NSNumber *)[coreArray [i] identifier] stringValue]ということは、 'coreArray [i]'は 'id'オブジェクトを返し、エラーを説明する' NSString'を返す 'identifier'というプロパティ/メソッドを持つオブジェクトがいくつか存在することです。 – Larme