2011-01-01 3 views
18

CCTMXLayer에서 CGPoints 묶음이 있습니다. NSUserDefaults에 저장하려고하지만 우아한 방법을 찾아 낼 수 없습니다.NSUserDefaults를 사용하여 CGPoints 목록 저장

원래 여러 개의 NSValues ​​(valueWithCGPoint)가 포함 된 값에 대해 NSMutableSet을 사용하여 NSDictionary를 저장하려고했습니다. NSMutableSet 또는 NSValue 모두 NSUserDefaults에서 지원하지 못한다.

이 시점에서 CGPoint의 x 값을 문자열로 저장하고 필요에 따라 앞뒤로 변환하는 것을 고려하고 있습니다.

+0

파일에 NSKeyedArchiver를 사용하는 것으로 생각하신 적이 있습니까? (NSUserDefaults를 사용하는 대신) –

답변

46

NSStringFromCGPointCGPointFromString 한 쌍의 기능이 있습니다. 이들을 사용하여 직렬화를위한 점을 나타내는 문자열 배열을 생성 한 다음 완료되면 다시 변환 할 수 있습니다.

+0

주목할 가치가 있습니다! 나는이 기능들이 존재한다는 것을 몰랐다. 항상 목표의 새로운면을 발견하십시오 - c. –

1

박스 NSValue 개체. 그들이 거기에 들어가면 NSValues을 디스크에 쓸 수 있고 (<NSCoding>을 따르므로) 또는 NSUserDefaults 또는 무엇이든 넣을 수 있습니다.

+0

이것은 정확하게 나의 문제입니다. NSArray (또는 NSSet ... 저장하려고 노력하고 NSUserDefaults 사용하여 NSValues ​​중 하나를 시도했지만 오류가 계속 수신 : [NSUserDefaults setObject : forKey :] : 비 속성 값을 삽입하려고합니다. –

+0

속성 목록을 사용하지 마십시오. . NSValue 객체는 plists에 쓸 수 없습니다. –

+0

오 이런, 미안. 네,'NSKeyedArchiver'를 사용하여 NSValues를 NSDatas (또는 NSArray)를 NSData'로 변환해야합니다. –

관련 문제