Swift 4.2 iOS 11.x
尝试读取设置了lineOwner字段的iCloud数据库中的记录,但是努力创建一个有效的NSPredicate!
看起来不错,但是无法解析。
let predicate = NSPredicate(format: remoteAttributes.lineOwner + " != %@",0)
我收到无效的谓词错误消息[并且在讨价还价中遇到了令人讨厌的崩溃]。在此上花几个小时,就失去了生存的意愿。
如果我打印出数据库,我会看到这个。
答案 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