1

美好的一天,我想为具有 coocoa 框架的文件类型设置我的应用程序默认值。现在我写下一个代码:

bool setappasdefualt()
{
    OSStatus returnStatus = LSSetDefaultRoleHandlerForContentType(CFSTR(".txt"), kLSRolesAll, (CFStringRef) [[NSBundle mainBundle] bundleIdentifier]);
    if (returnStatus != 0) 
    {
        NSLog(@"Got an error when setting default application - %ld", returnStatus);
        return false;
    }
    return true;
}

但执行后它得到错误50。我做错了什么?

4

1 回答 1

4

" .txt" 是文件扩展名,而不是统一类型标识符 (UTI)。

您需要使用适当的 UTI,例如CFSTR("public.plain-text")

用户 Guillaume 编写了一个很好的小函数来将文件扩展名转换为 UTI,你可以在这里看到它,命名为“ UTIforFileExtension:(如果它对你有帮助,你应该支持他的答案:-)

于 2013-02-07T06:32:17.897 回答