0

まだ存在しない UIManagedDocument を作成しようとしています。これが私のコードです:

url = [NSURL URLWithString:@"file://ProjectSSDB"];
document = [[UIManagedDocument alloc] initWithFileURL:url];

if ([[NSFileManager defaultManager] fileExistsAtPath:[url path]]) {
    [document openWithCompletionHandler: ^(BOOL success) {
        if (success) [ProjectSSViewController documentIsReady];
        if (!success) NSLog(@"Couldn't open document at %@", url);
    }];
} else {
    [document saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
        NSLog(@"Returned %d", success);
        if (success) [ProjectSSViewController documentIsReady];
        if (!success) NSLog(@"Couldn't create document at %@", url);
    }];
} 

私の問題は、ファイルがまだ存在せず、saveToURL 操作が常に false を返しているように見えることです。なぜこれが起こっているのかについて、これをさらにデバッグできる方法はありますか?

編集:

その URL に書き込むことはできません。私は今これをやってみました:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSURL *url = [NSURL URLWithString:documentsDirectory];

NSLog(@"The URL is %@", [url absoluteString]);

実行すると、ログは URL が null であることを返すようです。私が間違っていることは他にありますか?

4

2 に答える 2

1

このパス「file://ProjectSSDB」に書き込むことはできません。権限がありません。次の方法でアプリケーションのルートを取得する必要があります。

NSString* rootPath = NSHomeDirectory();

Appleファイルシステムガイドラインで指定されているサブフォルダーの1つにデータを保存します

NSString* fullPath = [rootPath stringByAppendingPathComponent:@"subFoldeder/file.extension"];
于 2013-06-13T08:26:30.073 に答える
0

私はかなり長い間、UIManagedDocumentURLを生成するために次のコード スニペットを使用して成功しています。

NSURL *url = [NSFileManager.defaultManager URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask].firstObject;
url = [url URLByAppendingPathComponent:@"ARBITRARY_NAME"];

self.document = [UIManagedDocument.alloc initWithFileURL:url];

Ps: iOS 5 以降のソリューションです。

それがうまくいくかどうか教えてください;)

于 2014-06-17T10:26:09.113 に答える