SCDynamicStoreSetValue

SCDynamicStoreSetValue

我尝试更新Mac的代理设置。 SCDynamicStoreSetValue:返回false,表示更新失败。这是我使用的代码。正确的方法是什么?

let ds: SCDynamicStoreRef = SCDynamicStoreCreate(nil, "setProxy" as CFString, nil, nil)!

        let isUpdated = SCDynamicStoreSetValue(ds, "HTTPProxy" as CFStringRef, "111.111.111.1")

        if isUpdated{
            print("updated")
        }else{
            print("not updated")
        }


问题是有关SCDynamicStoreSetValue为什么返回false以及如何规避它。

最佳答案

SCDynamicStoreSetValue失败后,调用SCError()获取错误代码:

let errorCode = SCError()


或通过以下方式获取错误作为字符串:

let errorString = String.fromCString(SCErrorString(SCError()))


无论哪种情况,都请检查Status and Error Codes for the System Configuration Framework。这应该为您提供SCDynamicStoreSetValue返回false的原因。

(如果您的应用是“沙盒”,则可能的原因是kSCStatusAccessError或“权限被拒绝”。沙盒的应用无法设置这些值。)

09-25 21:36