我有一個使用NSPredicate返回的行數,其中comments.length> 0的iOS - NSPredicate string.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;
}
我能夠通過檢查空/空字符串,而不是使用。長度來解決這個問題,但我真的很想知道爲什麼。長度失敗當字符串以某些字符開頭時。
這是否發生過任何人?
不是你錯誤的原因,但方法簽名應該是' - (NSUInteger)commentsCount'。匹配'-countForFetchRequest:error:'的返回類型,並且不要使用'get'啓動方法名稱,除非它們間接返回多個項目([Cocoa Naming Conventions](https://developer.apple.com/library/mac) /documentation/Cocoa/Conceptual/CodingGuidelines/Articles/NamingMethods.html#//apple_ref/doc/uid/20001282-BCIGIJJF))。 –