0

IP アドレスとポート番号を保持する 2 つのテキスト ボックスを持つように、アプリケーション設定バンドルをセットアップしました。ただし、ハードコーディングされていない IP アドレスとポート番号を使用してコードを実行しても、何も起こりません。

誰かが私が間違っていることを見ることができますか?

コードの先頭で、識別子を定義します。これらは、Root.plist の識別子ボックスからそのままコピー アンド ペーストされます。

#define k_ip_address @"ip_address"
#define k_port_address @"port_number"

次に、IP アドレスとポート番号に接続するコードには、次の行があります。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *host = [defaults objectForKey:k_ip_address];// HOST;
uint16_t port = [defaults objectForKey:k_port_address];// PORT;

しかし、これらの変更を加えて新しいプログラムを実行しようとしても何も起こりませんが、ハードコードされたバージョンに戻すと、コードは正常に動作します。

ユーザーのデフォルトを間違って使用していませんか?

私のRoot.plistの画像 ここに画像の説明を入力

4

1 に答える 1

1

plist に保存されている値は、NSUserDefaults に表示される値ではありません。NSUserDefaults の場合、プログラムでデータを保存する必要があります。

あなたの問題を解決するには、2 つの解決策があります。

a) プログラムによってデータを NSUSerDefaults に保存し、.plist は忘れます。

NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setObject:MY_IP forKey: k_ip_address];
[defaults synchronize];

b) NSUserDefaults を忘れて、.plist から書き込み/読み取りを行います。

NSString *path = [[NSBundle mainBundle] pathForResource:@"Root"
                                                     ofType:@"plist"];
NSDictionary *dict = [[NSDictionary alloc]
                          initWithContentsOfFile:path]; 
于 2013-09-30T10:10:58.780 に答える