从 NSManaged 对象中过滤掉整数
Filtering out integer from NSManaged object
我有以下核心数据属性
@NSManaged public var part: [Int]?
它可能包含 0 或 1 或两者。我正在尝试过滤掉包含 1 的 part
并执行此操作
fetchRequest.predicate = NSPredicate(format:"part == %@", 1)
但我收到错误
Thread 1: EXC_BAD_ACCESS (code=1, address=0x1)
如果我这样做了。我在这里做错了什么?提前致谢。
只需使用以下代码:
let filteredArray = part.filter() { [=10=] == 1 }
print(filteredArray.count)
您会得到想要的结果。希望这有帮助。
您编写的代码,即
fetchRequest.predicate = NSPredicate(format:"part == %@", 1)
在上面的代码中,您试图 filter
所有 fetched rows
基于是否 part is 1 or not
。所以基本上在这里你使用 part
作为 Int
。但是根据声明,part
是 array [Int]
.
肯定会throw
一个exception
。
您需要filter each row after fetching
喜欢:
let filteredPart = part.filter({ [=11=] == 1 })
您可以使用 Predicate 实现相同的目的:
使用以下代码:
let part = [1,3,4,7,2,1,4,3,1,5,6,7,1,3,4,8,9,1]
let predicate = NSPredicate(format: "SELF == %d",1)
let result = (part as NSArray).filtered(using: predicate)
print(result)
Output:
[1, 1, 1, 1, 1]
您可以为此使用过滤器 (Swift 4.2)
let arrInt = [1,0,0,0,0,1,0,1,1,0,0,0,0,0,1,0,0,1,0,0,1]
let ones = arrInt.filter({[=10=] == 1})
print(ones)
输出:
[1, 1, 1, 1, 1, 1, 1]
我有以下核心数据属性
@NSManaged public var part: [Int]?
它可能包含 0 或 1 或两者。我正在尝试过滤掉包含 1 的 part
并执行此操作
fetchRequest.predicate = NSPredicate(format:"part == %@", 1)
但我收到错误
Thread 1: EXC_BAD_ACCESS (code=1, address=0x1)
如果我这样做了。我在这里做错了什么?提前致谢。
只需使用以下代码:
let filteredArray = part.filter() { [=10=] == 1 }
print(filteredArray.count)
您会得到想要的结果。希望这有帮助。
您编写的代码,即
fetchRequest.predicate = NSPredicate(format:"part == %@", 1)
在上面的代码中,您试图 filter
所有 fetched rows
基于是否 part is 1 or not
。所以基本上在这里你使用 part
作为 Int
。但是根据声明,part
是 array [Int]
.
肯定会throw
一个exception
。
您需要filter each row after fetching
喜欢:
let filteredPart = part.filter({ [=11=] == 1 })
您可以使用 Predicate 实现相同的目的: 使用以下代码:
let part = [1,3,4,7,2,1,4,3,1,5,6,7,1,3,4,8,9,1]
let predicate = NSPredicate(format: "SELF == %d",1)
let result = (part as NSArray).filtered(using: predicate)
print(result)
Output:
[1, 1, 1, 1, 1]
您可以为此使用过滤器 (Swift 4.2)
let arrInt = [1,0,0,0,0,1,0,1,1,0,0,0,0,0,1,0,0,1,0,0,1]
let ones = arrInt.filter({[=10=] == 1})
print(ones)
输出:
[1, 1, 1, 1, 1, 1, 1]