NSData
으로 개체를 변환하려면 NSKeyedArchiver.archivedDataWithRootObject(obj)
을 사용합니다. archivedDataWithRootObject(obj)
메서드는 해당 매개 변수가 을 따르는 NSObject
이어야합니다.Swift의 문자열, 배열 및 사전 NSObject입니까? 구조체가 NSObject 일 수있는 이유는 무엇입니까?
스위프트 String
s, Array
s 및 Dictionary
s를 보관 해 보았는데 제대로 작동했습니다. 그래서 나는 String
이 NSCoding
을 따르는 NSObject
이라고 생각합니다.
는 또한 String
는 NSObject
것을 확인하기 위해, 놀이터에서이 코드를 검사 :
var str = "Hello, playground"
let isObject = (str is NSObject) // isObject is true
하지만 (Cmd를가 + 클릭으로) String
의 정의를 탐색 할 때, 그것은 String
이를 것을 보여준다 struct
. String
이 NSObject
이라는 코드를 찾을 수 없습니다.
public struct String {
/// An empty `String`.
public init()
}
그럼, 왜 String
정의에, 나는 코드가 String
는 NSObject
것을 보여주는 찾을 수 없습니다? 왜 struct가 NSObject
이 될 수 있습니까?
설명해 주셔서 감사합니다. 신속한 String 구조체가했던 것처럼 NSString에 연결되는 MyString 구조체를 어떻게 만들 수 있습니까? – huync
@huync 그 행동은 신속한 언어에 내장되어 있습니다. 구조체를 직접 만들고 구조체를 NSString으로 연결할 수는 없을 것입니다 ... 만약 당신이 원하는 이유가 'NSKeyedArchiver'를 사용할 수 있다면 간단히 클래스를 만드는 것이 더 낫습니다. NSString이나 NSObject로부터 상속받은 것 –
@BlakeLockley NSString과 String 같은 타입 사이에서 어떻게 브리징이 이루어지는 지에 대한 지식을 얻으려는 모든 자료가 있습니까? 그것과 관련된 기술적 인 과정처럼? +1. –