我尝试使用类型为NSNumber的属性选择值,如果property == intValue或property == nil。 但是这段代码忽略了属性== nil的值。 重点是什么?
import UIKit
import AVFoundation
class ViewController: UIViewController {
var engine = AVAudioEngine()
override func viewDidLoad() {
super.viewDidLoad()
let input = engine.inputNode!
let player = AVAudioPlayerNode()
engine.attach(player)
let bus = 0
let inputFormat = input.inputFormat(forBus: bus)
engine.connect(player, to: engine.mainMixerNode, format: inputFormat)
input.installTap(onBus: bus, bufferSize: 512, format: inputFormat) { (buffer, time) -> Void in
player.scheduleBuffer(buffer)
}
try! engine.start()
player.play()
}
}
UPD:最简单的方法也不起作用:
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"(ANY region.beacons.major == %d OR ANY region.beacons.major = nil)
AND (ANY region.beacons.minor == %d OR ANY region.beacons.minor = nil)",
rangedBeacon.major.intValue, rangedBeacon.minor.intValue];
UPD 2:可能因为ANY + nil而出现问题 根据这个答案Core Data, NSPredicate, ANY key.path == nil ANY只选择NOTNULL值。
答案 0 :(得分:0)
简单地测试未成年人的一个属性;例如:
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"region.beacons.minor.length = 0"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"region.beacons.minor.stringValue = nil"];
编辑我认识到您应该删除ANY
如果minor
为nil,则任何调用也将以nil返回,或者对于数字类型返回0。
答案 1 :(得分:-1)
首先,我注意到您在使用分配运算符=
而不是相等 ==
时与{{1}进行比较}。
另外,尝试与Singleton NSNull实例nil
进行比较。