Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从NSM托管对象中筛选出整数_Ios_Swift_Nspredicate - Fatal编程技术网

Ios 从NSM托管对象中筛选出整数

Ios 从NSM托管对象中筛选出整数,ios,swift,nspredicate,Ios,Swift,Nspredicate,我有以下核心数据属性 @NSManaged public var part: [Int]? 并且它可能包含0或1或两者。我正在尝试筛选出包含1的部分,并执行了此操作 fetchRequest.predicate = NSPredicate(format:"part == %@", 1) 但是我得到了错误 线程1:EXC\u错误访问(代码=1,地址=0x1) 如果我做了以上的事情。我做错了什么?提前感谢。只需使用以下代码: let filteredArray = part.filter()

我有以下核心数据属性

@NSManaged public var part: [Int]?
并且它可能包含0或1或两者。我正在尝试筛选出包含1的
部分
,并执行了此操作

 fetchRequest.predicate = NSPredicate(format:"part == %@", 1)
但是我得到了错误

线程1:EXC\u错误访问(代码=1,地址=0x1)


如果我做了以上的事情。我做错了什么?提前感谢。

只需使用以下代码:

let filteredArray = part.filter() { $0 == 1 }
print(filteredArray.count)

你会得到想要的结果。希望这有帮助。

只需使用以下代码:

let filteredArray = part.filter() { $0 == 1 }
print(filteredArray.count)

你会得到想要的结果。希望这有帮助。

您编写的代码,即

fetchRequest.predicate = NSPredicate(format:"part == %@", 1)
在上面的代码中,您正试图根据
部分是否为1来过滤所有
获取的行
。所以这里基本上是使用
part
作为
Int
。但是根据声明,
部分是一个
数组[Int]

它肯定会抛出一个异常

获取后,您需要
过滤每一行,如:

let filteredPart = part.filter({ $0 == 1 })

您编写的代码,即

fetchRequest.predicate = NSPredicate(format:"part == %@", 1)
在上面的代码中,您正试图根据
部分是否为1来过滤所有
获取的行
。所以这里基本上是使用
part
作为
Int
。但是根据声明,
部分是一个
数组[Int]

它肯定会抛出一个异常

获取后,您需要
过滤每一行,如:

let filteredPart = part.filter({ $0 == 1 })

您也可以使用谓词实现同样的效果: 使用以下代码:

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)
输出:

[1,1,1,1,1]


您也可以使用谓词实现同样的效果: 使用以下代码:

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)
输出:

[1,1,1,1,1]


您可以使用过滤器(Swift 4.2)

输出:

 [1, 1, 1, 1, 1, 1, 1]

您可以使用过滤器(Swift 4.2)

输出:

 [1, 1, 1, 1, 1, 1, 1]


任何因为它是一个数组,所以您希望如果其中一个部分值是1?您面临的错误是什么?尝试了任何一个,没有工作
NSManaged
属性可以声明为数组吗?我非常怀疑。我同意@vadian的观点,
NSManaged
怎么可能是一个数组?有吗?因为它是一个数组,所以您希望如果其中一个部分值是1?您面临的错误是什么?尝试了任何一个,没有工作
NSManaged
属性可以声明为数组吗?我非常怀疑。我同意@vadian的观点,
NSManaged
怎么可能是数组?感谢您的解释,所以我不能将它作为谓词应用于获取请求。对。你不能<代码>部分是单个
行的
属性<代码>获取请求。谓词
过滤器
应用于所有获取的
@Coder221,您想获取其
part
属性中包含
1
的所有对象,还是想对
part
属性本身做些什么?@user28434我只想获取部分中包含1的所有对象,什么都不取more@Coder221,那么这个答案就没用了。您应该在
中使用带
的谓词,就像SELF中的
%@一样。部分
包含
感谢您的解释,因此我不能将其作为谓词应用于获取请求。对。你不能<代码>部分是单个
行的
属性<代码>获取请求。谓词
过滤器
应用于所有获取的
@Coder221,您想获取其
part
属性中包含
1
的所有对象,还是想对
part
属性本身做些什么?@user28434我只想获取部分中包含1的所有对象,什么都不取more@Coder221,那么这个答案就没用了。您应该在
中使用带
的谓词,如SELF.part
CONTAINS
中的
%@相反,您可以直接使用过滤函数,如
part.filter({$0==1})
是,但Coder221希望使用谓词实现它,因此,这是另一种方法,通过它我们可以得到相同的结果。Coder221希望在
NSFetchRequest
上设置谓词,而不是在数组上。相反,您可以直接使用筛选函数,如
part.filter({$0==1})
是,但Coder221希望使用谓词实现它,因此,这是一种替代方法,通过它我们可以得到相同的结果。Coder221希望在
NSFetchRequest
上设置谓词,而不是在数组上。