2016-06-17 5 views
1

@NSManagedについて多くのことを読んだことがあり、多くの人がObjective-Cの@dynamicプロパティと同じことを言っています。誰かはまた、基本的にマシンコードが通常のコードのコンパイル時に存在する必要があると言いましたが、NSManagedタグを使用すると、直前にそれを置くことをコンパイラーに約束することができます。NSManagedとthe! operator

NSManagedとの違いは何ですか?オペレーター?私の目には、たとえ自分のコードがそれを反映していなくても、実行時に設定されることをコンパイラに伝えているという意味では、どちらも非常に似ています。

いくつかの説明は知っていればうれしいです。ありがとう!

答えて

1

@NSManaged!オペレータとの違いは、前者は!オペレータはちょうどあなたが設定する必要はありませんすることができ、オプションの値をアンラップ一方コアデータは、変数/定数の実装の世話をするようコンパイラーに指示していることです変数/定数を宣言したときの元の値。次のように宣言された変数または定数:var/let value: CGFLoat!暗黙的にアンラップされたはオプションであり、使用するためにラップ解除する必要はありません。しかし、それはまだ無限になる可能性があり、Xcodeが実行時にあなたに叫ぶでしょう(アプリケーションがクラッシュする)。

+0

"コンパイラが不平を言っていないときに使用しようとすると"いいえ、コンパイラはあなたにそれをさせて "Welp、あなたは今自分でいる"と言うでしょう。 **実行時**でnilが発生すると、クラッシュします。 – Alexander

+0

@AMomchilov、あなたは絶対に正しいです。それに応じて私はそれを訂正し、他の人は混乱しないようにします。 – Ike10

+0

ありがとうございました!さて、私は迅速なフォローアップがあります。だから、私は進捗インジケータをアニメーション化していました。使用していたアニメーションの角度は、最初は「var angle:Double!」でした。アニメーション化されませんでした。進捗インジケータは最終的な値に変化していませんでした。しかし、「@ NS Managed var angle:Double」に変更したところ、きれいに動作しました。これは、CoreDataが変数の更新に使用されたため、更新されるたびに 'drawInContext'関数が実行されるためですか? –

関連する問題