5

私はiCloudストレージへの画像を扱っています。このリンクの サンプルコードを使用して実装しています。しかし、ここではグリッドビューを使用して画像を表示しています。グリッド ビューの場合、私はAQGridViewサンプルを使用しています。これを実装しているときに問題が発生しました。

私のプロジェクトはローカル ストレージでは正常に動作しますが、iCloudストレージでは動作しません。グリッドビューに画像を追加している間、ビューは1つだけ追加されましたが、プロセスが完了するとビューから削除され、取得できませんでしCloudURLた。

ここにいくつかのメインコード

    - (void)processiCloudFiles:(NSNotification *)notification {

// Always disable updates while processing results
[_query disableUpdates];

[_iCloudURLs removeAllObjects];

// The query reports all files found, every time.

NSArray * queryResults = [_query results];

for (NSMetadataItem * result in queryResults) {

    NSURL * fileURL = [result valueForAttribute:NSMetadataItemURLKey];

    NSNumber * aBool = nil;

    // Don't include hidden files
    [fileURL getResourceValue:&aBool forKey:NSURLIsHiddenKey error:nil];

    if (aBool && ![aBool boolValue]) {

        [_iCloudURLs addObject:fileURL];

        NSLog(@"%@",_iCloudURLs);



    }

}

NSLog(@"Found %d iCloud files.", _iCloudURLs.count);

_iCloudURLsReady = YES;

if ([self iCloudOn]) {

    NSLog(@"%d",_objects.count);

    // Remove deleted files
    // Iterate backwards because we need to remove items form the array

    for (int i = _objects.count -1; i >= 0; --i) {

        PTKEntry * entry = [_objects objectAtIndex:i];

        if (![_iCloudURLs containsObject:entry.fileURL]) {

            [self removeEntryWithURL:entry.fileURL];
        }
    }

    NSLog(@"%@",_iCloudURLs);

    // Add new files
    for (NSURL * fileURL in _iCloudURLs) {

        [self loadDocAtURL:fileURL];
    }

    self.navigationItem.rightBarButtonItem.enabled = YES;

}

if (_moveLocalToiCloud) {

    _moveLocalToiCloud = NO;
    [self localToiCloudImpl];

}
else if (_copyiCloudToLocal) {

    _copyiCloudToLocal = NO;
    [self iCloudToLocalImpl];

}

[_query enableUpdates];

 }

また、コンソールにアプリケーションのフローを表示します。助けてください

 2013-02-19 13:29:26.159 XXXX[337:907] iCloud available at: file://localhost/private/var/mobile/Library/Mobile%20Documents/XXXXX~com~XXXX~XXXX/
 2013-02-19 13:29:32.847 XXXX[337:907] No longer watching iCloud dir...
 2013-02-19 13:29:32.849 XXXX[337:907] Starting to watch iCloud dir...
 2013-02-19 13:29:33.002 XXXX[337:907] Found 0 iCloud files.
 2013-02-19 13:29:33.004 XXXX[337:907] local => iCloud impl
 2013-02-19 13:29:38.697 XXXX[337:907] Want to create file at file://localhost/private/var/mobile/Library/Mobile%20Documents/XXXX~com~XXXX~XXXX/Documents/iBoast_Art_Soodu.ibt
 2013-02-19 13:29:38.781 XXXX[337:907] File created at file://localhost/private/var/mobile/Library/Mobile%20Documents/XXXX~com~XXXX~XXXX/Documents/iBoast_Art_Soodu.ibt
 2013-02-19 13:29:38.790 XXXX[337:907] load table
 2013-02-19 13:30:38.563 XXXX[337:907] button index: 1
 2013-02-19 13:30:41.595 XXXX[337:907] iCloud available at: file://localhost/private/var/mobile/Library/Mobile%20Documents/XXXX~com~XXXX~XXXX/
 2013-02-19 13:30:41.607 XXXX[337:907] No longer watching iCloud dir...
 2013-02-19 13:30:41.612 XXXX[337:907] Starting to watch iCloud dir...
 2013-02-19 13:30:41.780 XXXX[337:907] Success to close file://localhost/private/var/mobile/Library/Mobile%20Documents/XXXX~com~XXXX~XXXX/Documents/iBoast_Art_Soodu.ibt
 2013-02-19 13:30:41.790 XXXX[337:907] load table
 2013-02-19 13:30:42.011 XXXX[337:907] Found 0 iCloud files.
4

1 に答える 1

0

これについて正式な回答はありませんが、これはタイミングの問題であると確信しています。iCloud アイテムがいつアップロードされたかを知るために、何らかの委任アクションが行われることを期待しています。

また、ロギングを少し改善します。この線

NSLog(@"%@",_iCloudURLs);

より良いフォーマットにする必要があります。これがないとわからないのですが、この線に到達することはないようです。

于 2014-03-09T19:39:43.227 に答える