Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.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 创建nspredicate时EXC\u访问权限错误_Ios_Nspredicate_Exc Bad Access - Fatal编程技术网

Ios 创建nspredicate时EXC\u访问权限错误

Ios 创建nspredicate时EXC\u访问权限错误,ios,nspredicate,exc-bad-access,Ios,Nspredicate,Exc Bad Access,我在计算从生日到今天的月数。 根据这个数字,我正在构建一个谓词来从核心数据中获取对象。 尽管月数计算正确(如日志所示),但在构建谓词时,我获得了EXC_BAD_访问权限 这是我的密码: NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSUInteger unitFlags = NSMonth

我在计算从生日到今天的月数。 根据这个数字,我正在构建一个谓词来从核心数据中获取对象。 尽管月数计算正确(如日志所示),但在构建谓词时,我获得了EXC_BAD_访问权限

这是我的密码:

    NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];

    NSUInteger unitFlags = NSMonthCalendarUnit;

    NSDateComponents *components = [gregorian components:unitFlags
                                            fromDate:birthdate
                                              toDate:today options:0];
    int months = [components month];
    NSLog(@"months: %ld", (long)months);
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"(alter_min_monat > %@)", months];

为什么会发生这种情况?

问题在于占位符,不是直接使用
NSPredicate
,而是使用内部调用的
initWithFormat:

%@
不应与
int
一起使用,请改用
%d

所以这一行:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"(alter_min_monat > %@)", months];
应该是:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"(alter_min_monat > %d)", months];

其他链接信息:

%@
int
?请尝试使用
%d