NSPredicate快速显示空字符串

时间:2018-09-28 15:05:51

标签: swift nspredicate

Swift 4.2 iOS 11.x

尝试读取设置了lineOwner字段的iCloud数据库中的记录,但是努力创建一个有效的NSPredicate!

看起来不错,但是无法解析。

let predicate = NSPredicate(format: remoteAttributes.lineOwner + " != %@",0)

我收到无效的谓词错误消息[并且在讨价还价中遇到了令人讨厌的崩溃]。在此上花几个小时,就失去了生存的意愿。

如果我打印出数据库,我会看到这个。

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以简单比较空白DROP FUNCTION IF EXISTS "informix".SCRIPT_MIGRATION(); CREATE FUNCTION "informix".SCRIPT_MIGRATION() RETURNS BOOLEAN as RESULT; DEFINE lv_execute lvarchar(32739); DEFINE li_errnum, li_eisam INT; DEFINE lv_errtxt CHAR(200); ON EXCEPTION SET li_errnum, li_eisam, lv_errtxt ROLLBACK; CALL regista_log('script_migration', get_session_user(), li_errnum, lv_errtxt); RETURN 'f'; END EXCEPTION; CALL set_isolation_level(); BEGIN; LET lv_execute = 'LOAD FROM ''C:\Users\Admin\Desktop\ConstaWeb_Stuff\test.sql'' DELIMITER ''+'' INSERT INTO SCRIPT_MIGRATION_TEMP_TABLE;'; DROP TABLE IF EXISTS SCRIPT_MIGRATION_TEMP_TABLE; CREATE TABLE SCRIPT_MIGRATION_TEMP_TABLE( STRING_TO_EXECUTE LVARCHAR(31739) ); EXECUTE IMMEDIATE lv_execute; COMMIT; RETURN 't'; END FUNCTION; CALL SCRIPT_MIGRATION(); String""占位符代表%@,因此发生崩溃是因为您向String提供了Int而不是NSPredicate

对于变量名,还应该使用String占位符,而不要附加字符串。

%K

如果您还想过滤掉let predicate = NSPredicate(format: " %K != %@", remoteAttributes.lineOwner, "") 值,则可以使用复合谓词:

nil