是否可以将属性设置为nil使用NSBatchUpdateRequest?传递NSNull()到propertiesToUpdate不工作:
let unlockRequest = NSBatchUpdateRequest(entityName: "MyEntity")
unlockRequest.predicate = NSPredicate(format: "self in %@", myObjectIDs)
unlockRequest.propertiesToUpdate = ["lockDate": NSNull()]
var error: NSError?
myContext.executeRequest(unlockRequest, error: &error)
if let error = error {
log.error("Failed to unlock: \(error)")
}
Run Code Online (Sandbox Code Playgroud)
我没有得到任何错误,但它没有清除日期.
我也尝试过设置它NSExpression(forConstantValue: NSNull()),但这也不起作用(forConstantValue参数不接受可选值,所以我不能传递它nil.).
我无法让Xcode 7象征我被App Store用户发送的崩溃日志,并且在尝试手动符号化时它失败了,尽管我拥有所有必需的dSYM.
崩溃日志摘录:
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x0000000100fa990c
Triggered by Thread: 0
Filtered syslog:
None found
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libswiftCore.dylib 0x0000000100fa990c 0x100e64000 + 1333516
1 libswiftCore.dylib 0x0000000100fa990c 0x100e64000 + 1333516
2 MyApp 0x00000001002cdc50 0x1000a4000 + 2268240
...
Binary Images:
0x1000a4000 - 0x10079ffff MyApp arm64 <29a862b975b335ae91c2615c775e064f> /var/mobile/Containers/Bundle/Application/CC9E1FB1-22BB-4723-B28A-95EBE21522A1/MyApp.app/MyApp
Run Code Online (Sandbox Code Playgroud)
我的应用程序已启用Bitcode,因此我从Xcode> Organizer> Archives下载了dSYM.然后我确认29A862B9-75B3-35AE-91C2-615C775E064F.dSYM在存档中确实存在提交到App Store的构建(与用户在崩溃时运行的构建相同).
然后手动对崩溃日志进行符号化,我在终端中运行以下命令:
$ export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
$ /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/Current/Resources/symbolicatecrash -v ~/Desktop/CrashOnLaunchLogFromUser.crash > ~/Desktop/Symbolicated.crash
Run Code Online (Sandbox Code Playgroud)
然后我等待处理完成,但生成的符号文件没有替换符号.查看输出时,在与应用程序的二进制文件相关时,我看到以下信息:
Symbolicating...
....fetching symbol file for MyApp--[undef] …Run Code Online (Sandbox Code Playgroud) 我正在使用 RxSwift 并且我正在尝试扩展另一个库,我正在使用它来制作可观察的东西。
该库基本上每次值更改时都会调用一个委托方法,我想挂钩到这个方法,每当它调用委托时,还要将新值添加到我想在我的子类中创建的可观察序列中。
我已经看到了如何创建可观察序列,但在每个示例中,next事件都被发送到Observable.create方法块内的观察者。我不知道如何从传递给create.
我只是想创建一些我可以观察或可以使用 RxSwift 驱动的东西,并在某些点手动添加到序列中。
如果有人能指出我正确的方向,我将不胜感激,因为我对此很陌生。
我正在从核心数据中获取几千个对象,并且我只想返回那些至少有 1 个与之相关的对象的对象。
当我使用类似于以下的谓词时,需要很长时间才能获取对象。大约5-8秒:
NSPredicate(format: "relationName.@count > 0")
Run Code Online (Sandbox Code Playgroud)
是否有更有效的方法来执行此获取,或者我应该将值缓存在对象中以进行快速查找(即属性hasRelatedObjects)。
如果缓存是最好的途径,我不认为它是微不足道的。Tag例如,如果我修改我的对象,willSave我可以获取关系计数并将其存储在我的新属性中。但是,如果相关对象在其关系一侧将标签添加到自身,则该Tag对象永远不会更改,因此willSave不会被调用。
我如何确保无论您调用myTag.addRelatedObject(obj)(myTag对象已更新)还是myObj.addRelatedTag(myTag)(myObj已更新),该值都已缓存?