問題タブ [nskeyedunarchiver]
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.
objective-c - nskeyedarchiver でビューを切り替えるときに画面にデータを保持する
私は xcode を約 9 か月間使用しており、アプリの完成に近づいていますが、小さな問題が 1 つあります...
背景を少し。いくつかのデータをランダムに吐き出すボタンがあります [この場合はワークアウト]。そのウィンドウには、データを更新してラベルをクリアするボタンもあります。
ユーザーがビューを変更したり、アプリを終了したりしても、画面に randomStretchLabel1、randomStretchLabel2 を保持したいと考えています。画面に表示されたままにして、ユーザーが randomButton または clearAllWorkouts を押したときにのみリロードできるようにします。
StretchViewController へのテーブル ビューの図
提案に基づいて次のように変更しましたが、それでも私が望むものは得られません。テーブル ビュー (他のすべてのワークアウトが保存されている場所) に戻ると、ラベルは自動的にリセットされます。
ios - 自己参照 NSMutableDictionary
私がこれを持っているとしましょう:
dict
次のように呼び出してアーカイブします。
その後、後でアーカイブを解除します。
問題はではdict2[@3]
なくdict2
、初期化されていない であり、入力NSDictionary
したものを回復できなかったことです。これを回避する方法を知っている人はいますか? 前もって感謝します!
ios - NSKeyedArchiver を使用した TableView 行の複製
alertView ボタンをクリックした後、NSKeyedArchiver を使用して mutableArray を格納しています
そしてviewDidLoadに私はこのコードを入れました
問題は、私のtableView行が配列の数の2倍であることです。tableView はこれらのみを表示する必要があります
しかし、プレイリスト名を追加するたびに、これらすべてが追加され、最後に名前が追加され、配列のカウントは同じになりますが、tableView はそのようなダブルを示します
そして、配列のカウントを印刷すると、7としか表示されません。本当にあなたの助けが必要で、私は家に帰りました。
iphone - iPhone - データを plist ファイルに保存する
NSCoding を使用して、データを plist に保存する方法については、このガイドに従っています。わかる範囲でガイドを順を追って実行し、サンプルコードも見ましたが、実際にデータを保存するようになると、保存されていないようで、呼び出されていないようです保存機能。ボタンを介して保存機能を呼び出しています:
ボタンをクリックすると、ログは次のように表示されます。
そこから、saveData 関数で次の NSLog を設定します。
このことから、これらの NSLog はどれも出力に表示されず、適切に呼び出されていない理由がわかりません。さらに情報が必要な場合はお知らせください。
ありがとう。
objective-c - NSKeyedArchiver で不明なクラスをデコードしてからエンコードしますか?
NSKeyedArchiver で生成された plist である OS X アプリケーションからプロジェクト ファイルを取得しました。その中の 1 つの文字列をプログラムで変更する必要があります。
基本的に、Foundation クラスを含む NSDictionary オブジェクトが含まれています。ただし、1 つのカスタム クラス (GradientColor) があります。私はそれを自分で定義し、initWithCoder: と encodeWithCoder: で何もしようとしませんでしたが、新しく生成されたプロジェクト ファイルを読み取ろうとしてターゲット アプリケーションがクラッシュします。そのため、初期化時に nil 値を適切に処理できません。
クラスを initWithCoder:(NSCoder *)aDecoder で初期化して変更せずにエンコードするときに、どのキーがクラスに対応しているかをどうにかして知ることができますか?
ios - NSKeyedArchiver が NSCoder から継承しているのに、なぜ NSKeyedUnarchiver が存在するのですか?
コンテキストを提供するために、私は iOS/Objective-C を初めて使用し、Web 開発 (Ruby/JS/C#) のバックグラウンドを持っています。クラスがどのように機能するかは理解していますが、元の実装者が、エンコードとデコードの両方のロジックを 1 つのクラスに統合する代わりに、これら 2 つのクラス (NSKeyedArchiver
と) を作成した理由がわかりません。NSKeyedUnarchiver
抽象クラスaのApple ドキュメントをNSCoder
読むにはNSCoder
、エンコードとデコードの両方のメソッドがあります。私が考えることができる唯一のことは、コードが長いため、元の実装者が2つに分割したことです...単一のクラスのみを使用する方が開発者にとって便利だと思われますが、多分私は'これについて何か微妙なところがありません。では、これには何か歴史的な理由があるのでしょうか? NSCoder
エンコード/デコード API の両方を定義するという点で「便利」でしたが、エンコーダー/デコーダーに分離することを意図していましたか? aNSCoder
が何をすべきか誤解していますか?
ios - NSKeyedUnarchiver 中に UIProgressView を更新する機会はありますか?
私のアプリでは、配列をコア データに保存しますNSKeyedArchiver
。次に、データが必要な場合 (Core Plot にフィードするため) に次のコードを使用します。
これはうまくいきます!しかし、dataArray が大きい場合、アーカイブを解除するのに数秒かかることはありません。アーカイブ解除中にprogressViewバーを更新する方法はありますか? 前もって感謝します。