我已将应用程序设置包设置为有两个文本框来保存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的图片
答案 0 :(得分: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];