我正在为即时通讯编写应用程序,而且我被卡住了。
我能够从我的保管箱上的plist中读取数据(字典),但是我无法从我的应用程序中修改它,我真正希望实现的是什么。
以下是我阅读在线.plist文件的方法:
@Implementation
NSDictionary *wholePlist;
-(void)viewDidLoad
{
wholePlist = [[NSDictionary alloc]initWithContentsOfURL: [NSURL URLWithString:[NSString stringWithFormat:@"https://dl.dropboxusercontent.com/s/cfpree9see19t00/users.plist"]]];
self.allUsers = [wholePlist objectForKey:@"allUsers"];
} //self.allUsers is NSDictionary, also.
如果我改变它,这就是我试图保存的方式
- (IBAction)registerButtonPressed:(UIButton *)sender {
NSString *username = self.usernameTextField.text;
NSString *password = self.setPassTextField.text;
NSMutableArray *myContacts = [[NSMutableArray alloc]init];
NSMutableArray *inbox = [[NSMutableArray alloc]init];
NSDictionary *user = [[NSDictionary alloc]initWithObjects:@[username, password, myContacts, inbox] forKeys:@[@"username",@"pass",@"myContacts",@"inbox"]];
if ([user isEqualToDictionary:[self.allUsers objectForKey:username]]) {
[[[UIAlertView alloc]initWithTitle:@"Registration error" message:@"Username already taken. Please, choose another username." delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil]show];
} else {
NSURL *plistURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://dl.dropboxusercontent.com/s/cfpree9see19t00/users.plist"]];
[self.allUsers setValue:user forKey:username];
[self.allUsers writeToURL:plistURL atomically:YES];
}
}
如果我使用writeToFile:
在本地/离线(在我的Mac或应用程序目录中的某个文件夹中)执行此操作。当我使用writeToURL:
时,它无法正常工作。
我的问题是:
谢谢!
答案 0 :(得分:1)
即时通讯应用程序几乎总是最好使用sockets
完成。我 HIGHLY 建议不要使用服务器上的文件进行读写操作。虽然它是可能的,但你要求的是一个痛苦和顽固的世界。
所以以严格的前瞻方式回答你的问题:
node.js
这里有一个非常受欢迎的聊天服务器示例:http://socket.io/get-started/chat/ 如果您有任何问题,请与我们联系。