2016-09-21 6 views
0

에 대한 객체를 설정 한 후 나는 내가하려고하면 해결 또는 나에게이 밝혀 NSUserDefaultsNSUserDefaults 키

let defaults = NSUserDefaults.standardUserDefaults() 
let s = defaults.objectForKey("troll") 

if s == nil { 
    defaults.setObject("This is important message", forKey: "troll") 
    defaults.synchronize() 
} 

print(s as! String) // It returns nil 

관련 explaination를 제공하는 구글이나 다른 질문에 도움을 찾을 수없는 문제에 직면하고있다 전무 객체를 설정 한 직후에 객체에 접근하면 nil을 반환합니다!

하지만, 다음 내 장치에 다시는 내 프로젝트를 실행하는 경우 :

s as! String // returns "This is important message"

내 질문이 대신 처음에 전무를 반환하는 문자열 값을 반환하지 않는 이유이지만, 두 번째 프로젝트 실행 시간 반환하는 문자열 값.

문자열 값을 처음으로 반환해야합니다. 그게 가능하니? 누군가 내가 뭘 잘못하고 있다고 지적 할 수 있겠습니까?

미리 감사드립니다. 당신은 자신을 걷어차려고

답변

3

이 ...

if s == nil { 

그래서 그냥 s은 전무라고 말했다, 나는 그것을 가지고 ...

print(s as! String) // It returns nil 

글쎄, 당신은 그것을 무엇을 기대합니까 너는 방금 말하지 않았어! :-)

나는 당신이이 일을 의미 생각 :

let s = defaults.objectForKey("troll") 
if s == nil { 
    s = "This is important message" 
    defaults.setObject(s, forKey: "troll") 
    defaults.synchronize() 
} 
print(s as! String) // no longer returns nil 

당신은, 선생님, 나에게 맥주를 빚지고있다.

+0

나는 정말로 나 자신을 걷어차 고. ... 투쟁은 그 결함을 발견하는 것이었다! 때로는 코드를 살펴 보려면 다른 사람이 필요하지만 감사합니다! :))) –

+1

안녕하세요, 우리 모두가 우리의 사물함에 이것들을 가지고 있습니다 ... –

+0

만약 여전히 s == nil이라면 나는 그것을 얻지 못합니다, 그는 인쇄하지 않는 값을 설정합니다! Nothing이었습니다 –