[ios] 저장된 NSUserDefaults를 쉽게 볼 수 있습니까?

저장된 내용을 NSUserDefaults직접 확인할 수있는 방법이 있습니까? 내 데이터가 올바르게 저장되었는지 확인하고 싶습니다.



답변

다음으로 이동하면 시뮬레이터에서 앱의 pList 파일을 찾을 수 있습니다.

/ users / 사용자 이름 / Library / Application Support / iPhone Simulator / <Sim Version> / Applications

이 디렉토리에는 디렉토리라는 여러 GUID가 있습니다. 몇 가지 앱을 작업하는 경우 몇 가지 앱이 있습니다. 따라서 앱 바이너리를 찾아야합니다.

find . -name foo.app
./1BAB4C83-8E7E-4671-AC36-6043F8A9BFA7/foo.app

그런 다음 GUID 디렉토리의 Library / Preferences 디렉토리로 이동하십시오. 그래서:

cd 1BAB4C83-8E7E-4671-AC35-6043F8A9BFA7/Library/Preferences

다음과 같은 파일을 찾아야합니다.

<Bundle Identifier>.foo.pList

pList 편집기에서이 값을 열고 지속되는 값을 마음의 내용으로 탐색하십시오.


답변

모든 현재 NSUserDefaults를 로그에 인쇄 할 수 있습니다.

키만 :

NSLog(@"%@", [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys]);

키와 값 :

NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);


답변

Swift에서는 다음을 사용할 수 있습니다.

스위프트 3.x & 4.x

모든 키와 값을 얻으려면 :

for (key, value) in UserDefaults.standard.dictionaryRepresentation() {
    print("\(key) = \(value) \n")
}

사용자 기본값의 완전한 사전 표현을 검색하려면 다음을 수행하십시오.

print(Array(UserDefaults.standard.dictionaryRepresentation()))

키를 검색하려면 다음을 수행하십시오.

// Using dump since the keys are an array of strings.
dump(Array(UserDefaults.standard.dictionaryRepresentation().keys))

값을 검색하려면 다음을 수행하십시오.

여기서도 dump를 사용할 수 있지만 values ​​배열의 각 요소에 대한 전체 상속 계층 구조를 반환합니다. 오브젝트에 대한 자세한 정보가 필요한 경우 dump를 사용하고, 그렇지 않으면 일반 print 문으로 진행하십시오.

// dump(Array(UserDefaults.standard.dictionaryRepresentation().values))
print(Array(UserDefaults.standard.dictionaryRepresentation().values))

스위프트 2.x

사용자 기본값의 완전한 사전 표현을 검색하려면 다음을 수행하십시오.

print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation())

키를 검색하려면 다음을 수행하십시오.

print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys.array)

값을 검색하려면 다음을 수행하십시오.

print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().values.array)


답변

배열의 각 키 값을 확인할 수 있습니다.

[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys]


답변

시뮬레이터에서 실행할 때 때때로 다음 스 니펫을 사용하여 NSUserDefaults 파일의 위치를 ​​인쇄합니다.

NSArray * path = NSSearchPathForDirectoriesInDomains (
   NSLibraryDirectory, NSUserDomainMask, YES);
NSString * folder = [경로 객체 AtIndex : 0];
NSLog (@ "NSUserDefaults는이 폴더에 저장됩니다 : % @ / Preferences", 폴더);

환경 설정 폴더의 경로를 생성합니다

NSUserDefaults는 다음 폴더에 저장됩니다. / Users / castle / Library / Application Support / iPhone Simulator / User / Applications / BC5056A0-F46B-4AF1-A6DC-3A7DAB984960 / Library / Preferences

NSUserDefaults 파일은 환경 설정 폴더에 있으며 접두사 및 응용 프로그램 이름에 따라 이름이 지정됩니다.

dk.castleandersen.dreamteam.grid.plist

실제 장치에서도 마찬가지입니다.


답변

plist 파일 이름이 <app-bundle-identifier>.plist이므로 find명령을 사용 하여 경로를 찾을 수 있습니다 . 그러나 전체 컴퓨터를 검색하면 시간이 오래 걸리므로 다음과 같이 좋은 범위를 선택해야합니다.~/Library/Developer/CoreSimulator 로 Xcode 6 .

예:

find ~/Library/Developer/CoreSimulator -type f -name com.awesome.app.plist

출력은 다음과 같습니다.

/Users/hlung/Library/Developer/CoreSimulator/Devices/B61913F6-7D7C-4E45-AE2F-F45220A71823/data/Containers/Data/Application/E4CC51CF-11E5-4168-8A74-6BAE3B89998F/Library/Preferences/com.awesome.app.plist

거기에서 open명령 을 사용할 수 있습니다 . 또는 iTerm2 를 사용 하는 경우 경로를 마우스 오른쪽 버튼으로 클릭하여 엽니 다.


답변

스위프트 4.0

//func dictionaryRepresentation() -> [String : AnyObject]

NSUserDefaults.standardUserDefaults ()의 dictionaryRepresentation은 [String : AnyObject]를 반환하기 때문에

우리는로 캐스팅했습니다 NSDictionary. 그런 다음 괄호 ‘()’로 묶으면 NSDictionary에서와 마찬가지로 .allKeys 또는 .allValues를 호출 할 수 있습니다

 print((UserDefaults.standard.dictionaryRepresentation() as NSDictionary).allKeys)