मैं कोर डेटा के बारे में बहुत कुछ पढ़ता हूं .. लेकिन एक इकाई-प्रकार पर गिनती करने का एक प्रभावी तरीका क्या है (जैसे एसक्यूएल चयन गणना (1) ... के साथ कर सकता है।)। अब मैंने NSFetchedResultsController
के साथ सभी को चुनने और NSArray
की गिनती के साथ इस कार्य को हल किया है! मुझे यकीन है कि यह सबसे अच्छा तरीका नहीं है ...कोको कोर डेटा इकाइयों को गिनने का प्रभावी तरीका
उत्तर
मुझे नहीं पता कि NSFetchedResultsController का उपयोग करना आपके लक्ष्य को पूरा करने का सबसे प्रभावी तरीका है (लेकिन यह हो सकता है)। स्पष्ट कोड इकाई उदाहरणों की गिनती प्राप्त करने के लिए नीचे है:
// assuming NSManagedObjectContext *moc
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:entityName inManagedObjectContext:moc]];
[request setIncludesSubentities:NO]; //Omit subentities. Default is YES (i.e. include subentities)
NSError *err;
NSUInteger count = [moc countForFetchRequest:request error:&err];
if(count == NSNotFound) {
//Handle error
}
[request release];
, आप इकाइयों की गणना नहीं कर रहे हैं स्पष्ट है, लेकिन किसी विशेष इकाई के उदाहरण। (सचमुच इकाइयों की गिनती करने के लिए, प्रबंधित इकाइयों को अपनी इकाइयों की गिनती के लिए पूछें।)
सभी डेटा लाने के बिना किसी दिए गए इकाई के सभी उदाहरणों को गिनने के लिए, -countForFetchRequest:
का उपयोग करें।
उदाहरण के लिए:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity: [NSEntityDescription entityForName: entityName inManagedObjectContext: context]];
NSError *error = nil;
NSUInteger count = [context countForFetchRequest: request error: &error];
[request release];
return count;
मैं सिर्फ यह और भी अधिक कुशल बनाने के ... कि जोड़ देंगे और क्योंकि इसकी सिर्फ एक गिनती, तुम सच में किसी भी संपत्ति के मूल्य की जरूरत नहीं है और निश्चित रूप से में से एक की तरह आपके ऊपर दिए गए कोड उदाहरणों को उप-इकाइयों की आवश्यकता नहीं है।
तो, कोड इस तरह होना चाहिए:
int entityCount = 0;
NSEntityDescription *entity = [NSEntityDescription entityForName:@"YourEntity" inManagedObjectContext:_managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];
[fetchRequest setIncludesPropertyValues:NO];
[fetchRequest setIncludesSubentities:NO];
NSError *error = nil;
NSUInteger count = [_managedObjectContext countForFetchRequest: fetchRequest error: &error];
if(error == nil){
entityCount = count;
}
आशा है कि यह मदद करता है।
मुझे विश्वास है कि ऑब्जेक्ट्स गिनने का सबसे आसान और सबसे प्रभावी तरीका NSFetchRequest
परिणाम NSCountResultType
पर सेट करना है और इसे NSManagedObjectContext countForFetchRequest:error:
विधि से निष्पादित करना है।
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:entityName];
fetchRequest.resultType = NSCountResultType;
NSError *fetchError = nil;
NSUInteger itemsCount = [managedObjectContext countForFetchRequest:fetchRequest error:&fetchError];
if (itemsCount == NSNotFound) {
NSLog(@"Fetch error: %@", fetchError);
}
// use itemsCount
स्विफ्ट
यह कोर डाटा में एक इकाई के उदाहरणों की कुल संख्या की गिनती प्राप्त करने के लिए काफी आसान है:
let context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "MyEntity")
let count = context.countForFetchRequest(fetchRequest, error: nil)
मैं एक 400,000+ साथ सिम्युलेटर में यह परीक्षण किया ऑब्जेक्ट गिनती और परिणाम काफी तेज़ था (हालांकि तात्कालिक नहीं)।
आप predicated विशिष्ट के लिए गिनती पता लगाना चाहते हैं लाने, मैं विश्वास है कि यह सबसे अच्छा तरीका है:
NSError *err;
NSUInteger count = [context countForFetchRequest:fetch error:&err];
if(count > 0) {
NSLog(@"EXIST");
} else {
NSLog(@"NOT exist");
}
मैं स्विफ्ट 3 के लिए एक सरल उपयोगिता विधि लिखा वस्तुओं की गिनती लाने के लिए।
static func fetchCountFor(entityName: String, predicate: NSPredicate, onMoc moc: NSManagedObjectContext) -> Int {
var count: Int = 0
moc.performAndWait {
let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: entityName)
fetchRequest.predicate = predicate
fetchRequest.resultType = NSFetchRequestResultType.countResultType
do {
count = try moc.count(for: fetchRequest)
} catch {
//Assert or handle exception gracefully
}
}
return count
}
स्विफ्ट 3
static func getProductCount() -> Int {
let moc = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Product")
let count = try! moc.count(for: fetchRequest)
return count
}
- 1. कोको और कोर डेटा
- 2. कोर डेटा: सभी इकाइयों को प्राप्त करें
- 3. कोको त्रुटि 256 कोर डेटा
- 4. कोर डेटा
- 5. कोर डेटा में बड़ी संख्या (10.000+) ऑब्जेक्ट्स को हटाने का सबसे प्रभावी तरीका क्या है?
- 6. SQLite में किसी तालिका में पंक्तियों को गिनने का सबसे प्रभावी तरीका क्या है?
- 7. कोर डेटा इकाइयों को निर्यात करने के लिए सर्वोत्तम अभ्यास
- 8. कोर डेटा
- 9. दो आईओएस कोर डेटा निरंतर स्टोर मर्ज करने का एक प्रभावी तरीका क्या है?
- 10. कोर डेटा
- 11. कोर डेटा
- 12. कोर डेटा
- 13. CMSampleBuffer सामग्री को संशोधित करने का सबसे प्रभावी तरीका
- 14. कोर डेटा
- 15. कोर डेटा: एकाधिक इकाइयों के लिए एक व्यस्त संबंध?
- 16. स्ट्रीम से डेटा पढ़ने का सबसे प्रभावी तरीका
- 17. कोर डेटा: एकाधिक इकाइयों या रिश्ते से परिणाम प्राप्त करें
- 18. PHP में स्ट्रिंग में स्वरों को गिनने का सरल तरीका?
- 19. कोर डेटा
- 20. कोर डेटा सेव त्रुटि (NSValidationErrorKey, कोको त्रुटि 1570) एनएसडीएटी
- 21. कोर डेटा और कोर स्थान
- 22. घुसपैठ गिनने के लिए अधिक कुशल तरीका?
- 23. कोर डेटा
- 24. कोर डेटा
- 25. कोर डेटा माइग्रेशन मैपिंग
- 26. कोर डेटा
- 27. कोर डेटा
- 28. कोर डेटा
- 29. कोर-डेटा
- 30. कोर डेटा
तेंदुए पर में आप countForFetchRequest उपयोग करना चाहते हैं: और नहीं executeFetchRequest: – IlDan
हाँ! धन्यवाद। मैं कोड अपडेट करूंगा। –
और भविष्यवाणी सेट करने के लिए छोड़ दें। कोई अनुमान नहीं: सभी विवरण प्राप्त करें जो इकाई विवरण से मेल खाते हैं – IlDan