Saya memiliki metode sederhana yang menggunakan NSPredicate untuk mengembalikan jumlah baris di mana comments.length > 0.
Masalahnya, saya menemukan bahwa ketika kolom Komentar dimulai dengan + - * atau /, properti panjang selalu bernilai 0, dan dengan demikian baris tersebut dikecualikan dari penghitungan.
Saya membuka tabel di browser SQLite dan memverifikasi kolom tersebut adalah VARCHAR. Menggunakan kueri SQLite untuk memeriksa panjang string berfungsi dengan baik (LENGTH(ZComments) > 0), jadi ini pasti masalah CoreData.
Inilah fungsi saya...
-(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;
}
Saya dapat mengatasinya dengan memeriksa string kosong/null alih-alih menggunakan .length, tapi saya benar-benar ingin tahu mengapa .length gagal ketika string dimulai dengan karakter tertentu.
Apakah ini pernah terjadi pada seseorang?
-(NSUInteger)commentsCount
. Cocokkan jenis pengembalian-countForFetchRequest:error:
, dan jangan mengawali nama metode denganget
kecuali metode tersebut mengembalikan beberapa item secara tidak langsung (Konvensi Penamaan Kakao). - person Hal Mueller   schedule 31.03.2014