在開發iOS應用程序時,NSUserName()似乎不適用於Xcode 6。 我在開發過程中使用它來獲取桌面目錄以將核心數據種子保存到我的桌面。是否NSUserName()在xcode6中不起作用?
NSString* deskStorePath = [NSString stringWithFormat:@"/Users/%@/Desktop/newMySQL.CDBStore", NSUserName()];
我有我的代碼更改爲:
#define USER_NAME @"myusername"
NSString* deskStorePath02 = [NSString stringWithFormat:@"/Users/%@/Desktop/newMySQL.CDBStore", USER_NAME];
現在NSUserName()在Xcode 6沒有返回值,但曾在Xcode工作正常5.
NSString* myname = NSUserName();
NSString* myfullname = NSFullUserName();
NSLog(@"name : %@ - %@",myname,myfullname);
它是一個錯誤? 我現在需要導入一個庫嗎? 或者在應用程序開發過程中是否有替代方案來獲取當前的OSX用戶名?
編輯:(這是我使用保存核心數據種子商店桌面,然後我添加到我的開發環境的方法)
- (void) saveSeedToDesktop
{
[self testNSUser];
NSString* myDBName = [NSString stringWithFormat:@"%@.sqlite",CD_FILE_NAME];
NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent : myDBName];
NSString* deskStorePath = [NSString stringWithFormat:@"/Users/%@/Desktop/newMySQL.CDBStore", USER_NAME];
NSError*error;
if (![[NSFileManager defaultManager] copyItemAtPath:storePath toPath: deskStorePath error:&error]){
NSLog(@"error with path : %@",error);
}
else {
NSLog(@"Copied");
}
}
- (NSString *)applicationDocumentsDirectory {
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) lastObject];
}
這是一個測試類:
- (void) testNSUser {
NSString* myname = NSUserName();
NSString* myfullname = NSFullUserName();
NSLog(@"name : %@ - %@",myname,myfullname);
__unused NSString* deskStorePathTest01 = [NSString stringWithFormat:@"/Users/this_is_my_name/Desktop/test.txt"]; //works
__unused NSString* deskStorePathTest02 = [NSString stringWithFormat:@"~/Desktop/test.txt"];
__unused NSString* deskStorePathTest03 = [NSString stringWithFormat:@"/Users/~/Desktop/test.txt"];
__unused NSString* deskStorePathTest04 = [NSString stringWithFormat:@"/~/Desktop/test.txt"];
[self fileExistsTest:deskStorePathTest01];
[self fileExistsTest:deskStorePathTest02];
[self fileExistsTest:deskStorePathTest03];
[self fileExistsTest:deskStorePathTest04];
}
- (void) fileExistsTest : (NSString*)storePath {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *pathForFile = storePath;
if ([fileManager fileExistsAtPath:pathForFile]){
NSLog(@"exists : %@",storePath);
}
else {
NSLog(@"doesnt exist");
}
}
你不能使用'〜/ Desktop'嗎? – 2014-10-06 03:35:13
Xcode 6>(lldb)po不再工作在我的最終目的上NSUserName()
這與Xcode 6有什麼關係? – Droppy 2014-10-16 19:16:11