小编Fra*_*cis的帖子

launchctl - 删除启用/禁用覆盖

在OS X Yosemite(10.10)上,有没有办法删除服务的启用/禁用覆盖设置?

例如,要永久禁用root用户不存在的服务"test",请执行以下操作:

sudo launchctl disable user/0/test
Run Code Online (Sandbox Code Playgroud)

检查它是否已添加到禁用列表中:

sudo launchctl print-disabled user/0
Run Code Online (Sandbox Code Playgroud)

结果:

disabled services = {
    "test" => true
}
login item associations = {
}
Run Code Online (Sandbox Code Playgroud)

现在,如何从禁用的服务列表中删除"test"?

(我知道我可以启用它,但我只想完全删除该条目.)

注意:

如果我重新启动计算机,我会看到"test"覆盖已添加到launchd disabled文件中:

sudo cat /var/db/com.apple.xpc.launchd/disabled.0.plist
Run Code Online (Sandbox Code Playgroud)

结果:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>test</key>
    <true/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

我试过运行此命令手动将其从.plist文件中删除:

sudo /usr/libexec/Plistbuddy /var/db/com.apple.xpc.launchd/disabled.0.plist -c Delete:test
Run Code Online (Sandbox Code Playgroud)

这会将其从文件中删除,但是当我重新启动计算机时它会再次出现.有任何想法吗?

launchd osx-yosemite launchctl

12
推荐指数
3
解决办法
1万
查看次数

核心数据:自动修剪字符串属性

对于我的核心数据NSManagedObject,我想确保任何NSString属性只包含已经修剪过的空格的字符串.

我知道我可以通过覆盖每个setter方法来实现这一点,如下所示:

- (void)setSomeProperty:(NSString *)someProperty
{
    someProperty = [someProperty stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    if ((!someProperty && !self.someProperty) || [someProperty isEqualToString:self.someProperty]) return;

    [self willChangeValueForKey:@"someProperty"];
    [self setPrimitiveValue:someProperty forKey:@"someProperty"];
    [self didChangeValueForKey:@"someProperty"];
}
Run Code Online (Sandbox Code Playgroud)

但是,这似乎需要编写很多代码,特别是因为我的托管对象可能具有相当多的NSString属性.

有没有更简单的方法?

core-data objective-c ios

4
推荐指数
1
解决办法
310
查看次数

标签 统计

core-data ×1

ios ×1

launchctl ×1

launchd ×1

objective-c ×1

osx-yosemite ×1