我有一个NSFetchedResultsController,我试图在背景上下文更新我的数据.例如,这里我试图删除一个对象:
persistentContainer.performBackgroundTask { context in
let object = context.object(with: restaurant.objectID)
context.delete(object)
try? context.save()
}
Run Code Online (Sandbox Code Playgroud)
有两件事我不明白:
NSFetchedResultsController在后台内容保存回其父级时更新,但这不会发生.我是否需要在主线程上手动触发某些内容?显然有一些我没有得到的东西.任何人都能解释一下吗?
我知道我已经正确地实现了获取的结果控制器委托方法,因为如果我改变我的代码直接更新viewContext,一切都按预期工作.
我以编程方式修改了一个自动布局约束.它对某个视图生效,但与该视图的其他约束绑定的其他视图不会更改其位置.是否有" updateAllConstraints "方法?
如果我有投掷方法,如下:
func doSomethingWithString(string:String) throws {
guard string.characters.count > 0 else {
throw NSError(domain: "CustomErrorDomain", code: 42, userInfo: ["foo" : "bar"])
}
// Do something with string...
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试调用它并阅读userInfo:
do {
try doSomethingWithString("")
} catch let error as NSError {
print(error.domain)
print(error.code)
print(error.userInfo)
}
Run Code Online (Sandbox Code Playgroud)
...它以空字典的形式返回,(但域名和代码已正确填充):
CustomErrorDomain
42
[:]
Run Code Online (Sandbox Code Playgroud)
但如果我加上这个额外的步骤:
do {
try doSomethingWithString("")
} catch let e {
let error = e as NSError
print(error.domain)
print(error.code)
print(error.userInfo)
}
Run Code Online (Sandbox Code Playgroud)
...有用:
CustomErrorDomain
42
[foo: bar]
Run Code Online (Sandbox Code Playgroud)
有人知道为什么会这样吗?
仅供参考 - 我正在使用Xcode 7 beta …
在苹果的文档指出一个CLAuthorizationStatus的.restricted意思是说:
用户无法更改此应用程序的状态,可能是由于存在家长控制等主动限制。
谁能告诉我还有什么其他原因(除了家长控制)会导致这种情况?
我想给用户一条有用的信息,告诉他们如何取消限制,但不确定如何措辞。