5

私はCoreDataをいじり始めており、URLのようなものを保存することについて質問があります。

現在、正常に動作するトランスフォーマブルとして構成されていますが、おそらく余分なデータが不必要に格納されていると感じています。テキストで簡単に表現できるため、絶対URLを文字列として格納するだけでよいのかどうか疑問に思っています。ロードされたときにNSURLオブジェクトをインスタンス化する(これが当てはまると思います)。もしそうなら、これをどのように実装する必要がありますか?

これまでの私の調査では、mogeneratorを使用してから、プロパティアクセサーをオーバーライドして、文字列とNSURLの間の変換を処理することを考えています。これがどのように行われているのか、通常行われているのか、あるいは私がわざわざさえも自分自身のために物事を困難にしているのかどうかを理解したいと思います。

乾杯ニック

4

3 に答える 3

10

答えは、実際のURLによって多少異なります。

fileURLの場合

のルーチンを使用NSURLしてブックマークデータを生成し、代わりに保存します。これにより、ファイルの移動に対する回復力が高まり、サンドボックス化されたアプリのセキュリティスコープを含めることができます。

他のすべてのために

あなたのオプションは保存することです:

  • からの文字列表現-absoluteString
  • からのデータ表現CFURLGetBytes()
  • を使用して生成されたデータNSCoder

-baseURL最後のものは、URLがaで構成されていて、その知識を保持したい場合にのみ役立つでしょう。

于 2013-04-10T08:38:20.653 に答える
4

モノジェネレーターに応じて、2番目のアプローチを使用します。「getters」と「setters」をオーバーライドし、URLから文字列へのマッピングを次のように実行します

NSString *urlString = [url absoluteString];

setPrimitiveValue:forKey:とその対応物のような使用

- (void)setYourURL:(NSURL*)newURL {
    [self willChangeValueForKey:@"yourURL"]; // call to notify the world you are modifying that property
    NSString* yourURLAsString = // perform the conversion here...
    [self setPrimitiveValue:yourURLAsString forKey:@"yourURL"];
    [self didChangeValueForKey:@"yourURL"]; // call to notify the world you've modified that property
}

URLにスペースが含まれている場合は、それらを。に置き換えることも考えられますstringByReplacingPercentEscapesUsingEncoding:

于 2013-02-16T09:32:35.983 に答える
4

Xcode9およびiOS11以降では、新しいURIタイプを使用して保存できURLます。

于 2017-10-09T15:57:12.670 に答える