3

Coreデータとリージョンモニタリングを使用しています。監視対象領域を区別する唯一の方法は、識別子にNSStringを使用することです。NSManagedObjectIDを使用したいのですが、動作させることができません。

私が試したこと:

NSURL *objURL = [managedObjectID URIRepresentation];
NSError *err;
NSString *identifier = [NSString stringWithContentsOfURL:myURL
                                                encoding:NSASCIIStringEncoding
                                                   error:&err];

私が得るエラーは次のとおりです。

The operation couldn’t be completed. (Cocoa error 256.)

より良い方法のアイデアはありますか?または私が間違っていることは何ですか?

4

1 に答える 1

9

の URI のコンテンツを取得しないでくださいNSManagedObjectIDstringWithContentsOfURL:encoding:error:URI が指すリソースの読み込みを試みます。URI がhttpor fileor などであるかどうかに応じて、適切な操作を使用します。しかし、URI を処理する方法がわかりNSManagedObjectIDません。とにかく、それはあなたがやりたいことではありません。

代わりに、あなたがやりたいことは

 NSString*identifier=[objURL absoluteString];

これにより、URL の文字列表現が得られます。

誰もが気付くように、マーカスのコメントを追加します。

特に移行が発生した場合、objectID は変更される可能性があることに注意してください。アプリケーションの 1 回の起動と次の起動の間で一貫性を保つために、その値に依存しないでください。

于 2010-08-19T06:48:21.147 に答える