我们开发了将由diff的员工使用的iphone应用程序。组织(实际上我们还没有将它作为企业应用程序,而是我们将把这个应用程序放在应用程序商店收费),所以我们想要的是每当有人安装应用程序时,应用程序将首次打开一个弹出窗口会出现在那里,要求输入URL (这将是指向该人员组织服务器的URL),所以通过代码逻辑,我想要的是什么时候我们将登录视图中的页面确实加载我想检查URL是否已经存储在应用程序中,如果它没有存储,那么我将弹出询问输入URL,如果存储,那么我只是允许他进入登录详细信息。
我的问题是我应该如何存储该URL以及我应该在哪里存储该URL以及我应该如何检查它是否已经存储。我试图将该URL存储在...其中urlfield.text是我要存储的URL。
NSError *error;
// For error information
// Create file manager
fileMgr = [NSFileManager defaultManager];
// Point to Document directory
documentsDirectory = [NSHomeDirectory()
stringByAppendingPathComponent:@"Documents"];
fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath];
// File we want to create in the documents directory
// Result is: /Documents/file1.txt
filePath = [documentsDirectory
stringByAppendingPathComponent:@"file1.txt"];
str=urlField.text;
// Write the file
[str writeToFile:filePath atomically:YES
encoding:NSUTF8StringEncoding error:&error];
// Show contents of Documents directory
NSLog(@"Documents directory: %@",
[fileMgr contentsOfDirectoryAtPath:documentsDirectory error:&error]);
我正在检查它是否存在..
// fileExists is a BOOL variable
fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath];
NSLog(@"Boolean value:=%d",fileExists);
if ( fileExists == 0 )
{
.......
........
}
但每次我运行应用程序时它返回'0'(表示BOOL变量fileExists)。 请有人告诉我完成任务的方法,我最终会尝试所有方面的逻辑。
答案 0 :(得分:5)
我使用NSUserDefaults。
首先检查用户是否第一次打开应用程序我检查NSUserDefault的第一个对象的值,如
//defaults is a object of NSUserDefault
NSString *URLEntered =[defaults objectForKey:@"URLISENTERED"];
if (!URLEntered) {
[defaults setValue:@"0" forKey:@"URLISENTERED"];
}
URLEntered第一次返回null,所以我为Key URLISENTERED设置值0
我允许用户输入组织服务器的URL, 在其中,我将关键URLISENTERED的值设置为1,如
[defaults setValue:@"1" forKey:@"URLISENTERED"];
同时我再拿一个NSUserDefault对象来存储服务器的URL并存储就像
// defaultURL is the object of NSUserDefault, and main URL is the URL of server user entered
[defaultURL setValue:mainURL forKey:@"mainURL"];
所以接下来当用户再次登录应用程序时
的值[defaults objectForKey:@"URLISENTERED"]
是我们设置的1,那个时候我直接导航用户登录屏幕,并使用
获取了mainURL的值mainURL=[defaultURL objectForKey:@"mainURL"];
并使用此网址进一步使用。
答案 1 :(得分:1)
据我了解您的问题,您可以使用 NSUserDefault 或 plist
使用plist:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"plist.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath: path])
{
path = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithFormat: @"plist.plist"] ];
}
NSMutableDictionary *data;
NSString *userURL ;
if ([fileManager fileExistsAtPath: path])
{
data = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
//To retrieve the data from the plist
NSMutableDictionary *savedURL= [[NSMutableDictionary alloc] initWithContentsOfFile: path];
userURL = [savedURL objectForKey:@"USER_URL"];
NSLog(@"%@",userURL);
// present login detail or more stuff with userURL
}
else
{
userURL = // prompt for user to enter URL
data = [[NSMutableDictionary alloc] init];
[data setObject:[NSNumber numberWithInt:value] forKey:@"USER_URL"];
[data writeToFile: path atomically:YES];
}
使用NSUserDefault:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *userURL = [defaults objectForKey:@"USER_URL"];
if(userURL) {
NSLog(@"%@",userURL);
//present login detail or more stuff with userURL
}
else {
userURL = // prompt for userURL
[defaults setObject:userURL forKey:@"USER_URL"];
}
答案 2 :(得分:0)
实际上,如果您想检查客户端上的URL。您可以使用sqlite数据库完成此任务。