【问题标题】:Accessing a .mobileprovision file from code从代码访问 .mobileprovision 文件
【发布时间】:2013-06-14 21:04:12
【问题描述】:

我正在尝试从我自己的 MacOS 程序中打开一个 .mobileprovision 文件并使用

读取它
[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];

文件路径正确,我得到了一个有效的文件句柄。

当我尝试使用 TextEdit 打开文件时,一切正常。我可以打开文件并阅读里面的文字。它只是不适用于代码。然后我得到一个

“...无法使用文本编码 Unicode (UTF-8) 打开”

错误信息。问题不在于编码 - 它是 UTF-8。似乎有一个安全或权限规则,不允许正确读取文件。

有人对此有解决方案吗?也许我需要在我的请求中添加一个权限标志,但我在这个方向上找不到任何东西。

提前致谢。

【问题讨论】:

    标签: macos cocoa permissions provisioning


    【解决方案1】:

    我在一个 txt 文件中遇到了同样的问题,并通过将 NSUTF8StringEncoding 更改为 NSUnicodeStringEncoding 解决了这个问题。

    可能是您的文件已使用不同类型的编码编写。以下是可用于 OSX 的字符串编码。试试看。

    
        NSASCIIStringEncoding = 1,      /* 0..127 only */
        NSNEXTSTEPStringEncoding = 2,
        NSJapaneseEUCStringEncoding = 3,
        NSUTF8StringEncoding = 4,
        NSISOLatin1StringEncoding = 5,
        NSSymbolStringEncoding = 6,
        NSNonLossyASCIIStringEncoding = 7,
        NSShiftJISStringEncoding = 8,          /* kCFStringEncodingDOSJapanese */
        NSISOLatin2StringEncoding = 9,
        NSUnicodeStringEncoding = 10,
        NSWindowsCP1251StringEncoding = 11,    /* Cyrillic; same as AdobeStandardCyrillic */
        NSWindowsCP1252StringEncoding = 12,    /* WinLatin1 */
        NSWindowsCP1253StringEncoding = 13,    /* Greek */
        NSWindowsCP1254StringEncoding = 14,    /* Turkish */
        NSWindowsCP1250StringEncoding = 15,    /* WinLatin2 */
        NSISO2022JPStringEncoding = 21,        /* ISO 2022 Japanese encoding for e-mail */
        NSMacOSRomanStringEncoding = 30,
    
        NSUTF16StringEncoding = NSUnicodeStringEncoding,      /* An alias for NSUnicodeStringEncoding */
    
        NSUTF16BigEndianStringEncoding = 0x90000100,          /* NSUTF16StringEncoding encoding with explicit endianness specified */
        NSUTF16LittleEndianStringEncoding = 0x94000100,       /* NSUTF16StringEncoding encoding with explicit endianness specified */
    
        NSUTF32StringEncoding = 0x8c000100,                   
        NSUTF32BigEndianStringEncoding = 0x98000100,          /* NSUTF32StringEncoding encoding with explicit endianness specified */
        NSUTF32LittleEndianStringEncoding = 0x9c000100        /* NSUTF32StringEncoding encoding with explicit endianness specified */
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-01
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多