Ankit,
Dưới đây là tl; dr skinny: sử dụng Core Data.
Đây là dạng dài:
Trong khi bạn có thể sử dụng nhiều tiêu chí để lựa chọn giữa Core Data, một ORM (FMDB) hoặc cuộc gọi sqlite trực tiếp, chi phí thực sự của sự lựa chọn này xuất phát từ thời gian của bạn để sử dụng nó, Apple hỗ trợ và tận dụng từ các dự án khác. (RESTKit, bản đồ dịch vụ REST trên dữ liệu cốt lõi, là phổ biến những ngày này.)
Do đó, một tỷ lệ lớn thời gian, nói 90 +% (một stat được tạo), câu trả lời trên iOS sẽ được sử dụng Dữ liệu cốt lõi. Tại sao? Một khi bạn nhận được hang của nó và xây dựng ra một vài phương pháp trợ giúp nhỏ, Core Data giúp bạn trong một thế giới tính toán nhất quán - đồ thị đối tượng-C. Dữ liệu cốt lõi sẽ dạy bạn những điều về cách sử dụng một ngôn ngữ động sẽ giúp mọi khía cạnh khác của lập trình iOS của bạn. Do đó, bạn có năng suất cao hơn. Đừng chống lại khuôn khổ.
Nếu bạn đang sử dụng một lược đồ cơ sở dữ liệu SQLite lớn, phức tạp & từ một ứng dụng khác, thì có thể có hiệu quả về chi phí khi sử dụng FMDB hoặc SQLite. Nhưng tôi nghi ngờ nó. Thời gian của bạn viết một ứng dụng dòng lệnh dựa trên Mac đơn giản để di chuyển DB sang một DB dữ liệu cốt lõi là một nhiệm vụ hữu hạn và đơn giản. Bạn gần như chắc chắn phải viết lại hầu hết logic nghiệp vụ trong Objective-C. (Có, C++ và Objective-C++ là cả hai công nghệ tốt. Có logic nghiệp vụ cơ sở dữ liệu của bạn thực sự được điều chỉnh để hoạt động trên một thiết bị hạn chế bộ nhớ? Tôi không nghĩ vậy.)
Dữ liệu cốt lõi nhận được hiệu suất. Nó thực sự khá nhanh. Bạn chỉ cần sử dụng nó khác với bạn sử dụng một DB. Đặc biệt, bạn hầu như luôn luôn tìm nạp dữ liệu từ cửa hàng và sau đó tinh chỉnh nó bằng cách sử dụng các vị từ trực tiếp trên các bộ và mảng khác nhau.Trên các thiết bị iOS, nơi flash chậm đáng ngạc nhiên, chiến lược tìm nạp quá mức này đặc biệt hiệu quả. Bạn thực sự có rất nhiều RAM trên các thiết bị này, sử dụng nó để đạt được hiệu suất. Nhưng thực sự, mã được chuyển từ môi trường máy tính để bàn hoặc máy chủ có rất nhiều giả định tiềm ẩn về tốc độ của đĩa, số lượng bộ nhớ và thực tế của một máy ảo có cửa hàng sao lưu, nó sẽ không hoạt động tốt trên thiết bị có bộ nhớ hạn chế pin, bộ nhớ hạn chế với kiểu bộ nhớ sôi nổi. [Nó cũng sẽ không hoạt động tốt trên các thiết bị Android.]) Bạn cũng sẽ làm chuẩn hóa dữ liệu của mình để đơn giản hóa hiển thị nó trong các tiện ích giao diện người dùng iOS và Mac OS X khác nhau. Có một vài ứng dụng mà Dữ liệu cốt lõi sẽ chậm hơn so với một DB SQLite tương đương. Những chi tiết đó đã được chi tiết ở nơi khác. Một trong những yêu cầu chính là các nhiệm vụ trong đó các ID được xác định bởi các cơ sở dữ liệu ngược dòng truy cập hiệu năng của Dữ liệu cốt lõi là đúng. Nhưng nó có thể được giảm nhẹ bằng cách lập chỉ mục và tìm nạp quá mức.
Điều cần nhớ về thiết bị di động là kích thước cơ sở dữ liệu, vì đây là những thiết bị di động trên lá của internet, thường có kích thước khiêm tốn. Do đó, hiệu suất là dễ dàng hơn để đạt được. Nhiều bài học từ thế giới máy chủ có thể không áp dụng cho thế giới di động chạy bằng pin này.
Nói cách khác, bạn phải sử dụng Objective-C trên iOS/Mac OS X, bạn sẽ đạt được một số lợi ích về năng suất quan trọng khi sử dụng Dữ liệu cốt lõi.
Andrew
Bạn đang lưu trữ dữ liệu gì, bạn có bao nhiêu dữ liệu, loại truy xuất nào bạn cần thực hiện, người dùng có thể chỉnh sửa dữ liệu đó không? – jrturton
Đó là câu hỏi của tôi .. Ý tôi là trên cơ sở nào tôi nên quyết định nên sử dụng cái gì và có hướng dẫn nào được cung cấp bởi táo hay người khác .. hay là nó sẽ đến với tôi theo thời gian. –
Nếu bạn cần cập nhật, chèn hoặc xóa nhiều hàng cùng lúc, thì Dữ liệu cốt lõi sẽ không phải là lựa chọn tốt. – AechoLiu