ตัวควบคุมวัตถุ โหมดเอนทิตี: การดึงข้อมูลช้าบน Mavericks

ใช้เวลา 5 วินาทีในการโหลด 8425 รายการบน iMac เครื่องสุดท้าย

ป้อนคำอธิบายรูปภาพที่นี่

ฉันไม่รู้ว่ามีอะไรเพิ่มเติมเพื่อให้ข้อมูลเพิ่มเติมแก่คุณ ฉันกำลังโหลดรายการสำหรับรายการแบบเลื่อนลงของ NSComboBox

ฉันทดสอบกับ Snow Leopard และ Mountain Lion แล้ว และใช้งานได้ดี ลองมาหลายเครื่องแล้ว ใช้งานได้ดีกับ osx ทั้งหมด ยกเว้น Mavericks ไฟล์บิลด์และฐานข้อมูลเดียวกัน


person aneuryzm    schedule 14.03.2014    source แหล่งที่มา


คำตอบ (1)


ฉันเดาว่า NSComboBox โหลดรายการทั้งหมดทีละรายการและ CoreData ต้องทำการวนซ้ำไปยังดิสก์ในแต่ละครั้ง คุณควรตรวจสอบสถานการณ์นี้ด้วยเครื่องมือเพื่อให้ทราบว่าเกิดอะไรขึ้น

ลองดึงข้อมูลรายการทั้งหมดล่วงหน้าก่อนที่จะแสดง คุณสามารถใช้คุณสมบัติ -[NSFetchRequest returnsObjectsAsFaults:] ที่ตั้งค่าเป็น NO ในระหว่างการดึงข้อมูลดังกล่าว

นี่เป็นตัวอย่างจากโครงการของฉันที่ทำการดึงข้อมูลล่วงหน้า:

if ( ! didPrefetch)
{
    didPrefetch = YES;

    // Your fetch request that will load all items
    NSFetchRequest* fetchRequest = ... ;

    // If you need to prefetch some relationships
    fetchRequest.relationshipKeyPathsForPrefetching = @[...]; 

    // This forces objects to fault info row cache
    fetchRequest.returnsObjectsAsFaults = NO; 

    [managedObjectContext executeFetchRequest:fetchRequest error:&error];
}
person pointum    schedule 15.03.2014
comment
ในเครื่องมือ ฉันพบว่ามีระยะเวลาการดึงข้อมูลสูงสำหรับเอนทิตีเฉพาะ ฉันจะได้ข้อมูลที่เป็นประโยชน์อะไรอีกจากข้อมูลนี้ ฉันใช้เครื่องมือ CoreData Fetches คุณแนะนำให้ตั้งค่าคุณสมบัติโดยทางโปรแกรมหรือไม่? ถ้าอย่างนั้นฉันไม่สามารถพึ่งพาการเชื่อมโยงตัวสร้างอินเทอร์เฟซเพียงอย่างเดียวได้ใช่ไหม - person aneuryzm; 17.03.2014
comment
อย่างไรก็ตาม ฉันได้ลองตั้งค่าคุณสมบัติ Use lazy fetching โดยไม่ประสบความสำเร็จ - person aneuryzm; 17.03.2014
comment
ฉันเดาว่าคุณไม่จำเป็นต้องกำจัดการเชื่อมโยง แต่คุณต้องทำการดึงข้อมูลล่วงหน้า ก่อน NSComboBox จะพยายามโหลดข้อมูลผ่านการผูก - person pointum; 17.03.2014
comment
ฉันเพิ่งพบว่าการดึงข้อมูลนั้นช้าสำหรับ Mavericks ฉันใช้งานแอปบน Snow Leopard และ Mountain Lion และใช้งานได้ดี - person aneuryzm; 17.03.2014
comment
อย่างไรก็ตาม รายการต่างๆ จะถูกดึงออกมาอย่างแน่นอนก่อนที่จะเปิด NSComboBox จริงๆ แล้วพวกมันทำให้หน้าจอทั้งหมดช้าลงหลังจากเปิดขึ้นมา - person aneuryzm; 18.03.2014