2013-07-14 3 views
0

다음 블록은 NSData 표현은 NSAppleEventDescriptor입니다. NSAppleScript을 반환합니다. 는 NSData 블록의 인코딩 무엇이며 어떻게 NSString 데이터로되어 변환해야NSAppleEventDescriptor 인코딩

< 646c6532 00000000 6c697374 00000174 00000000 00000000 00000018 6c697374 0000000c 00000000 75747874 00000008 0068006f 006d0065 75747874 0000001a 00540065 006d0070 00,390,033 00,370,033 00,360,030 00,360,031 00,367,574 78,740,000 001a0054 0065006d 00,700,032 00,300,037 00,370,030 00,390,033 00,310,033 75,747,874 00,000,018 00,540,065 006d0070 00,390,038 00,380,039 00,340,038 00,310,037 75,747,874 0000001a 00540065 006d0070 00,330,033 00,350,032 003 90,030 00,300,031 00,397,574 78,740,000 001a0054 0065006d 00,700,035 00,310,039 00,380,039 00,380,030 00,300,032 75,747,874 0000001a 00,540,065 006d0070 00,330,030 00,300,036 00,310,038 00,320,031 00,387,574 78,740,000 000a0044 00,610,076 00,690,064 75,747,874 00000010 0055006e 00,740,069 0074006c 00,650,064 75,747,874 0000000c 00,700,067 00,690,073 00,680,061 75,747,874 0000001a 00,540,065 006d0070 00,380,038 00,390,038 00,370,038 00,330,034 00,357,574 >

많은 감사 78740000 001a0054 0065006d 00,700,035 00,380,038 00,360,038 00,320,035 00,300,037, 데이비드

+0

일반적으로 NSAppleEventDescriptor를 동일한 objective-c 개체로 다시 변환합니다. 예를 들어, applescript 문자열은 NSString으로 변환 될 수 있습니다. 어레이에 나열하고, 사전에 기록하십시오. 그래서 우리가 도울 수 있기 전에 당신은 애플 스크립트에 대해 더 많이 알려야하고 애플 스크립트에서 반환되는 것을 알려줄 필요가 있습니다. – regulus6633

답변

0

Use -[NSAppleEventDescriptor stringValue] - AEDesc가 typeUnicodeText를 강요하지 않는다면 typeUnicodeText를 강제 변환하고 NSString으로 풀어야합니다 (그렇지 않으면 강제 변환 할 수없는 경우 nil을 반환합니다).

NSAppleEventDescriptor가 편의 팩/압축 풀기 메소드를 제공하지 않지만 광기가있는 AE 유형 (예 : typeLongDateTime) 중 하나를 디코딩해야하는 경우가 아니면 -[NSAppleEventDescriptor data]을 방문하면 안됩니다.

AppleScript 코드가 사용자 제공 스크립트가 아닌 응용 프로그램의 일부인 경우 NSAppleScript 대신 AppleScript-ObjC를 사용하는 것이 좋습니다. PyObjC 및 RubyCocoa와 마찬가지로 ASOC은 AppleScript 스크립트 객체를 일반 Cocoa 클래스 및 인스턴스로 나머지 프로그램에 표시하고 브리지를 교차 할 때 일반적인 AS 값을 코코아 등가물로 자동 변환하므로 사용하기가 훨씬 쉽고 강력합니다.

+0

블록이 인코딩으로 인코딩 된 것으로 밝혀졌습니다. NSUTF16LittleEndianStringEncoding은 Mac에서 Intel 프로세서를 사용하기 때문에 의미가 있습니다. 많은, 고마워, David –

+0

당신은 전적으로 안전하지 않은 가정을하고 있습니다. Apple Event Manager는 _ 유니버설 유니 코드 인코딩 (UTF8, UTF16BE, UTF16LE)에 대한 설명자 유형과 다수의 비 유니 코드 레거시 인코딩을 정의합니다. 다시, -data 메쏘드를 사용하지 마십시오. NSString을 얻으려면 -stringValue를 사용하면 필요한 모든 유형 검사와 변환이 수행됩니다. AEM과 같은 약한 동적 유형 시스템에서는 리턴 값을 실제로 필요한 유형으로 강제 변환하는 수신자 코드의 책임이 있습니다. 원래 유형이 무엇인지에 대해 맹목적으로 가정하지 마십시오. – foo

+0

내 코드를 검토합니다. 많은 감사 데이비드 –