0

我已经将我的应用程序设置包设置为有两个文本框来保存 IP 地址和端口号。但是,当我使用非硬编码的 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,您需要以编程方式存储数据。

为了解决您的问题,我看到了两种解决方案:

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 回答