ฉันมีวิธีง่าย ๆ ที่ใช้ NSPredicate เพื่อส่งคืนจำนวนแถวโดยที่ comment.length > 0
ปัญหาคือ ฉันพบว่าเมื่อคอลัมน์ Comment ขึ้นต้นด้วย + - * หรือ / คุณสมบัติ length จะประเมินเป็น 0 เสมอ ดังนั้นแถวจึงถูกแยกออกจากการนับ
ฉันเปิดตารางในเบราว์เซอร์ SQLite และตรวจสอบว่าคอลัมน์นั้นเป็น VARCHAR การใช้แบบสอบถาม SQLite เพื่อตรวจสอบความยาวของสตริงทำงานได้ดี (LENGTH(ZComments) > 0) ดังนั้นนี่จะต้องเป็นปัญหาของ CoreData
นี่คือหน้าที่ของฉัน...
-(int)getCommentsCount{
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setIncludesSubentities:YES];
[request setEntity:[NSEntityDescription entityForName:@"InspectionRecord" inManagedObjectContext:managedObjectContext]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(comments.length > 0)"];
[request setPredicate:predicate];
NSError *err;
NSUInteger count = [managedObjectContext countForFetchRequest:request error:&err];
//count is ALWAYS 0 if 'comments' starts with + - * or / WHYYY???
return count;
}
ฉันสามารถแก้ไขปัญหานี้ได้โดยการตรวจสอบสตริงว่าง/null แทนที่จะใช้ .length แต่ฉันอยากรู้ว่าทำไม .length จึงล้มเหลวเมื่อสตริงขึ้นต้นด้วยอักขระบางตัว
สิ่งนี้เคยเกิดขึ้นกับใครบ้างไหม?
-(NSUInteger)commentsCount
จับคู่ประเภทการส่งคืนของ-countForFetchRequest:error:
และอย่าขึ้นต้นชื่อเมธอดด้วยget
เว้นแต่จะส่งคืนหลายรายการทางอ้อม (แบบแผนการตั้งชื่อ Cocoa) - person Hal Mueller   schedule 31.03.2014