問題タブ [uidocument]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
268 参照

icloud - URL が NSURLUbiquitousItemHasUnresolvedConflictsKey に対して true を報告しているが、他のバージョンの URL がない場合、それはどういう意味ですか?

競合をテストするために、同じドキュメントの 2 つの異なるバージョンを 2 つのデバイスに保存しました。両方のデバイスでcurrentVersionOfItemAtURL、「勝者」のバージョン (両方のデバイスで同じ) を確認し、otherVersionsOfItemAtURLまたはremoveOtherVersionsOfItemAtURLを見て、他のバージョンを確認することができます。

currentVersionOfItemAtURLしかし、私は今、2 つのデバイスで が異なり、otherVersionsOfItemAtURLまたはが存在しない、奇妙な状態のドキュメントを取得したようですremoveOtherVersionsOfItemAtURLgetResourceValue:forKey:withを使用するNSURLUbiquitousItemHasUnresolvedConflictsKeyと、URL に未解決の競合があることが報告されますが、それらを確認する方法はありません。

URL が NSURLUbiquitousItemHasUnresolvedConflictsKey に対して true を報告しているが、他のバージョンの URL がない場合、それはどういう意味ですか? これは本番アプリで処理する必要があるケースですか?

0 投票する
0 に答える
426 参照

ios - UIDocument の最初の loadFromContents:ofType:error: を遅くするには?

ファイル パッケージを Finder から iTunes.app ファイル共有ペインにドラッグすると、UIDocument クラスが関連付けられたファイル ラッパーを読み込もうとしており、それを読み取るコードが、iTunes.app がコンテンツをコピーするよりも速く実行されているように見えます。 . 初期のファイル ラッパー配列には、ラッパー内の 2 つのファイルのうちの 1 つだけが含まれます。

では、コードを「遅く」するにはどうすればよいでしょうか。

performSelector:withObject:AfterDelay:1.0f を使用してテストを実行しましたが、問題なく動作しましたが、非常にリスクが高いように感じます。非常に大きなファイルが iTunes にドラッグされた場合 (非常に大きなファイルとは、私の遅延を超えるファイルを意味します)? 複数のファイルがすべて同時にドロップされた場合はどうなりますか?

ファイルを読み取る準備ができていることをどうにかして見ましたが、AppleのNSFileManagerのドキュメントには次のように書かれています

「操作が成功するかどうかを事前に判断しようとするよりも、操作 (ファイルのロードやディレクトリの作成など) を試み、エラーをチェックし、それらのエラーを適切に処理する方がはるかに優れています。」

しかし、タイミングの問題が発生するのは、構成ファイルラッパーのデコード中にあるため、それを「適切に」処理する方法がわかりません。

私のパッケージ ファイルには、data.dat と info.dat の 2 つのデータ ファイルがあります (この初期段階ですが、さらに多くなる予定です)。ファイルを iTunes.app にドラッグし、View Controller でそれを確認できるところまでコードが機能するようになったとき、data.dat は常に正常にデコードされていましたが、info.dat は見つかりませんでした。ファイルがローカル ドキュメント フォルダ内に配置されると、View Controller は期待どおりにすべてのデータを表示します (つまり、info.dat はファイル ラッパー内にあり、正しく形成されます)。これがタイミングの問題ではないかと疑って、ファイル名の定数とディスク上のファイルの名前を zdata.dat と ainfo.dat に変更しました。

私は遅延読み込みを使用していますが、View Controller は info.dat の内容に即座に関心を持っているため、遅延読み込みは iTunes がコピーを完了するのに十分な遅延ではありません!

私の UIDocument サブクラスの実装から:

この問題は、decodeObjectFromWrapperWithPreferredFilename: で発見され、期待されるファイル ラッパーが存在することを確認するためにチェックが行われます。通常、ファイルが破損しているか、アプリのバージョン 2 が別のファイル形式を使用している場合に、これが当てはまります。しかし、これらの状況を適切に処理することは、「偏執的なプログラミングはそのようなことを予期していた」という見出しの下にあり、「ちょっと待てば、すべてのデータが利用可能になる」という見出しの下にはありません。

0 投票する
2 に答える
3510 参照

ios - UIDocument の開閉動作

iCloud をサポートしていない UIDocument ベースのアプリがあります。ユーザーはドキュメントを作成し、アプリのドキュメント ディレクトリに保存できます。

また、いくつかの「サンプル」ドキュメントを作成し、それらをアプリのバンドルに渡しました。ユーザーが自分のドキュメントを開くのと同じ方法でサンプル ドキュメントを開くことができるようにします。

私が見ているのはこれです:

  1. viewDidLoadでは、 docs 配列にサンプル ドキュメントが取り込まれ、アプリの初回起動時に tableView に表示されます。ここでは問題はありません。すべてがスムーズで快適です。
  2. 次に、次のコードを使用してビューから戻り、開いているすべてのドキュメントを閉じます。

    /li>
  3. ビューを再度開くと、ドキュメントの配列が再び入力され、tableView が再入力されるはずですが、何も起こりません。

URL が同じファイルを指しており、有効であるにもかかわらず、以下の完了ハンドラーが呼び出されることはありません。

ドキュメントに保存されているユーザー生成ドキュメントではこの問題は発生していないため、読み取り専用バンドルで呼び出されて失敗する自動保存と関係があると思います

しかし、私はこの部分で立ち往生しています。どんな助けでも大歓迎です。

0 投票する
1 に答える
259 参照

iphone - UIDocument の読み込みに 40 秒かかるのはなぜですか?

UIDocument を読み込んで、そのコンテンツ (ファイル ラッパーにラップされている) をすばやくプレビューしようとしています。私はこのコードを呼び出します:

問題は、ログを取得するまでに 40 秒かかることもあれば、数ミリ秒しかかからないこともあります。40 秒は次のとおりです。

数ミリ秒は次のとおりです。

なぜそうなのか、どうすれば40秒かかるのを防ぐことができますか?


編集

さらにテストを行いました。これは、ローカル ファイルをロードするときにシミュレータでのみ発生することが判明しました。おもしろいことに、シミュレーターを起動すると 40 秒かかります。次に、シミュレーターを再度開始します。数ミリ秒かかります。その後、シミュレーターを再度開始すると、40 秒かかります。など。これは実際にはバグのように見えます。私は最新の xCode 4.5 DP2 を使用しているので、バグを報告する時が来たと思います。

0 投票する
1 に答える
1438 参照

ios - MacとiOSアプリに共通のiCloudコンテナ?

iOSとMacの両方のAppleプラットフォームで動作するiCloudベースのアプリを作成したいと思います。アプリはiOSのUIDocumentとMacのNSDocumentを使用して、ドキュメントベースの同期モデルを作成します。iOSで作成されたドキュメントはMacで利用でき、その逆も同様です。

私が直面している特定の問題は、両方のアプリで同じiCloudコンテナが必要なことです。XCodeは、アプリIDに基づいてアプリのデフォルトコンテナを作成します。これはAppleの要件のようであるため、両方のアプリで異なる必要があります。2つのアプリが異なるプラットフォーム上にある場合でも、同じアプリIDを持つことはできません。

そこで、デフォルトで作成されたコンテナーをそのままにして、MacアプリとiOSアプリの両方に別のコンテナーを追加しました。アプリ正常に動作しているようです。両方のアプリの正しい場所に新しいファイルパッケージを作成できますが、2つの問題があります。

  1. コンテナがiCloud設定管理画面に正しく表示されません。XCodeの資格セクションでcom.mycompany.myapp.mycontainer、両方のアプリと同じようにコンテナーに名前を付けました。iOSの設定画面([設定]->[一般]->[使用法]->[ストレージの管理]->[すべて表示])で、アプリの実際の名前ではなく、「mycontainer」と表示されます。アプリのInfo.plistに名前とアイコンを指定して、正しくリストすることはできますか?

  2. NSMetadataQueryが正しく機能していません。空のアプリケーションテンプレートを使用してiOSアプリを作成したため、Info.plistがCFBundleDocumentTypesキーで適切に設定されていませんでしたが、それを理解して修正しました。iOSアプリでNSMetadataQueryを起動するために、次を使用しています。

    [self.queryCloud setPredicate:[NSPredicate predicateWithFormat:@"%K like '*.myextension*'",NSMetadataItemFSNameKey]];

    検索範囲を次のように設定します。

    [self.queryCloud setSearchScopes:[NSArray arrayWithObjects:NSMetadataQueryUbiquitousDocumentsScope, NSMetadataQueryUbiquitousDataScope, nil]];

コンテナのURLを確立した後にクエリを実行すると、通知の収集が開始および終了しますが、からの更新通知は取得されませんNSMetadataQuery。先に進んで新しいドキュメントを作成しない限り。ドキュメントを作成すると、更新の通知が届きますが、そのセッションでのみ発生します。次回アプリを起動したときに、同じ設定でからの更新通知が表示されませんNSMetadataQuery

私は何が間違っているのですか?MacとiOSの両方を対象としたiCloudドキュメントアプリの作成に関する記事へのポインタをいただければ幸いです。提案、考えは大歓迎です。

0 投票する
2 に答える
963 参照

objective-c - UIDocument を閉じようとしたときのクラッシュを防ぐ

UIDoc を 2 回閉じようとしたときにクラッシュを防ぐ方法を知りたいです。私は自分のコードで、(理論的には) UIDocument を 2 回閉じることができないことを確認しようとしました。しかし、それでも時々発生し、その理由はわかりません。その場合、アプリはクラッシュします。

次のようにクラッシュを防止しようとしましたが、何の効果もありません (つまり、それでもクラッシュします)。

0 投票する
1 に答える
347 参照

ios - UIDocumentへのオーディオファイルの保存

私はiCloudで動作する小さなアプリを持っています。オーディオファイルをクラウドに保存します。2番目のデバイスからのオーディオファイルのロードがすぐに機能しないことに気づきました。だから私は実装しました

それは助けになりましたが、それでも動作が遅くなります。オーディオファイルをUIDocumentでラップすることで、他のiCloudデバイスでのダウンロードプロセスを高速化したかったのです。これも可能ですか?ファイルの内容をNSDataに保存することはできますが、ポイントはありますか(AVAudioPlayerがURLをどのように必要としているかを確認してください)。同期を高速化する別の方法はありますか?

ありがとう

0 投票する
1 に答える
684 参照

ios - UIDocument は決して dealloc を呼び出さない

UIDocument (iCloud で使用) の割り当てを解除できないように見える問題があります。

NSMetaDataQuery を実行して、次のようにドキュメントを検索した後..

クエリを処理します

次に、新しいドキュメントをロードまたは作成します。

NSLog(@"iCloud document opened %@", doc);、UIDocument ごとに異なるメモリ アドレスを示します。

UIDocument サブクラスに NSLog がありますが、呼び出されません。リリースしていないことがどこに保持されているのかわかりません。このクエリは、クラウド データを同期するたびに実行されます。これはかなり定期的に行われます。データは正しく同期されます。

デバッグに何も表示されず、アプリが単にダッシュボードに閉じられるという奇妙なクラッシュが発生しています (以前の経験から、アプリがメモリを消費しすぎて終了することがよくあります)。

私のUIDocumentが漏れていると思います.この仮定で正しいでしょうか.iCloudと格闘したのはこれが初めてなので、いくつかのことでまだ暗闇の中にいます.

私のサブクラスには次のプロパティがあります。

私はARCを使用していません。

0 投票する
1 に答える
649 参照

ios - UIManagedDocument で真っ黒になるコア データ データベースを事前にロードする

専門家の皆様、こんにちは... 私は初めての iPad アプリを作成しておりUIManagedDocument、アプリの起動時に XML ファイルを解析して Core Data DB を作成するベータ版を作成しています。ただし、これには時間がかかるため、一度オフラインにして、初期データをアプリ バンドルに直接含めたいと考えています。言うまでもなく、私はそれを機能させようとして壁にぶつかっています。

私は最初にコマンド ライン ユーティリティ アプローチに従いました。ここを参照してください。これは、.sqlite ファイルをインポートしてメソッドを編集しようとするまで機能しpersistentStoreCoordinatorました。モデルをロードするためのコードを記述する必要はありません。Mac OS X でドキュメント ベースのアプリケーションを使用している場合、アプリケーションのモデルを検索してロードするタスクを が管理します。"UIManagedDocumentpersistenStoreCoordinatorAppDelegateNSPersistentDocument

次に、この StackOverFlow の質問UIManagedDocumentに従って、シミュレーターでアプリの動作中のバージョンからをコピーしようとしまし た。これはまさにここで尋ねられた問題ですが、その質問に対する回答は、私が持っていないメソッドの修正にすぐに戻ります。persistentStoreNSPersistentStoreCoordinator

NSFetchRequestアプリバンドルからドキュメントディレクトリにコピーしたコードにテストを追加したので、アプリバンドルが空でUIManagedDocumentあることがわかりました。UIManagedDocumentファインダーからドラッグ アンド ドロップし、ターミナルを使用して対処しようとしました。persistentStore ファイルは正しく移動され、サイズは 106 KB ですが、アプリに空の DB が表示されます。

これを機能させる方法について何か提案はありますか?

configurePersistenStoreCoordinatorForURL:ofType:modleConfiguration:StoreOptions:error:クラス リファレンスに従って使用する必要がありUIManagedDocumentますか?

メソッドを変更できるように、一部のコア データ メソッドを AppDelegate に追加する必要がありpersistenStoreCoordinatorますか? その場合、このメソッドは他に何をする必要がありますか?

コマンドラインユーティリティが作成した、または使用しているように見える.sqlite DBを使用する方が良いpersistentStore UIManagedDocumentですか?

0 投票する
1 に答える
193 参照

iphone - UIDocument を閉じるのが遅い

UIDocument サブクラスを持つアプリケーションがあります。しかし、問題は、時々、方法closeWithCompletionHandlerが長すぎることです。時間がかかりすぎて、最後まで待ちきれません。問題は、メソッドにブレークポイントを設定すると- (id)contentsForType:(NSString *)typeName error:(NSError **)outError、すべてが正常に機能することです。それで、問題は何がそのような効果を引き起こすことができるかということです?

ありがとう!