TL; DR: LabQLite:
- là một ORM SQLite linh hoạt dành cho iOS
- có trước bằng văn bản giữa và ở mức độ thấp soạn sẵn cho CRUD
- đã sẵn bằng văn bản giữa và boilerplate mức thấp để kiểm soát cơ sở dữ liệu
- các tập lệnh có vỏ bao gồm phân tích SQLite 3 db và kích hoạt các lớp kế thừa các phương pháp CRUD từ
LabQLiteRow
- có 100 bài kiểm tra đơn vị trong v1.0
Tiết lộ đầy đủ: Đây là thư viện mà tôi đã phát triển. Nó được phát hành vào phạm vi công cộng.
Version dài
Check-out LabQLite. Đó là một chút "đồng xu" (tùy thuộc vào giấy phép bạn nhận được), nhưng tôi nghĩ rằng nó là ứng cử viên mạnh nhất hiện có cho SQLite trên iOS.
Nó gửi kèm theo một kịch bản lệnh shell có thể phân tích tệp cơ sở dữ liệu SQLite của bạn cho bạn, nhổ ra các tệp lớp tương ứng với các bảng và dạng xem. Tôi nhận thấy bạn đã đề cập rằng bạn đang đến từ một dự án trước đó. Nếu bạn có thể xuất tệp db SQLite từ dự án đó, bạn có thể chạy và chạy với các lớp mô hình có thể sử dụng trong vài giây (tùy thuộc vào kích thước db) bằng cách sử dụng labqlitemodelgen.sh
để có được tất cả các mô hình của bạn.
Lưu ý: Nếu bảng và quan điểm của bạn được đặt tên bằng dấu gạch dưới (ví dụ my_table_name), các lớp tương ứng được tạo ra sẽ làm theo quy ước đặt tên Objective-C (ví dụ MyTableName) - tương tự như vậy đối với các cột bảng để mô hình thuộc tính của lớp.
LabQLite trong phiên bản 1.0 có 100 bài kiểm tra đơn vị.
LabQLite cũng loại bỏ những gì tôi muốn gọi số bản đồ mức trung cấp. Nói cách khác, thường khi bạn nhận được tất cả ngôn ngữ C bản mẫu mức thấp được viết cho một dự án SQLite trên iOS, bạn vẫn phải viết phương thức CRUD cho mô hình của mình và có thể bạn phải viết phương thức trợ giúp (tùy thuộc vào ứng dụng của bạn)) quá. (EDIT: Điều này phổ biến với các giải pháp nguồn mở nhỏ hơn).
Với LabQLite, bạn không viết bp trung bình và thấp. Các lớp mô hình được tạo ra kế thừa từ một siêu lớp thực hiện tất cả điều đó cho bạn. Ngoài ra, các lớp được tạo không phải là mình chứa đầy các phương pháp CRUD - vì vậy các tệp lớp mô hình của bạn sẽ trông sạch hơn nếu chúng được lấp đầy bằng CRUD;)
Tích hợp nhanh chóng nếu bạn có tệp db SQLite trong gói ứng dụng:
/**
@abstract Activates a global singleton shared instance of an
LabQLiteDatabaseController with the database at the file path
specified.
@param filePath The file path to the sqlite3 database file in
the local bundle.
@param savePath The path (including file name) to which the
sqlite3 database file retrieved from the main bundle should
be saved.
@param NSDocumentDirectoryIsRootPath Prepends the savePath with
the path to the NSDocumentDirectory.
@param overwrite If set to YES, then this method will overwrite
any file it finds at the savePath. Otherwise, it will not.
@param error The standard error capturing double indirection
pointer.
@return Whether the activation of the shared database controller
was indeed successful.
@see
initWithFileInFromLocalBundle:toBeCopiedToAndUsedFromDirectory:assumingNSDocumentDirectoryAsRootPath:overwrite:error:
*/
+ (BOOL)activateSharedControllerWithFileFromLocalBundle:(NSString *)filePath
toBeCopiedToAndUsedFromDirectory:(NSString *)savePath
assumingNSDocumentDirectoryAsRootPath:(BOOL)NSDocumentDirectoryIsRootPath
overwrite:(BOOL)overwrite
error:(NSError **)error;
Còn có các cách tiếp cận tích hợp nhanh khác nếu bạn không đặt tệp db SQLite trong gói ứng dụng của mình.
Mã được nhận xét đầy đủ với cả nhận xét nội dung và tài liệu trong suốt.
Một yếu tố khác cần xem xét là khả năng bảo trì. Chắc chắn, các phần mềm miễn phí có khả năng phát hiện nhanh chóng, nhưng những gì người ta nhanh chóng biết là (a.) Tích hợp khung/thư viện rất nhanh, nhưng (b.) Đảm bảo ứng dụng của bạn chậm hơn vì các thay đổi quan trọng trong ứng dụng của bạn yêu cầu thay đổi đáng kể mã mô hình của bạn (ví dụ: boilerplate trung bình và thấp).
LabQLite được viết bằng Objective-C và vì vậy có thể sử dụng được, ví dụ như trong các hệ thống cũ cũng như trong các ứng dụng hiện đại.
khái niệm LabQLite giống như một 'giản đồ có thể kéo dài'.'Đó là, nếu bạn muốn, bạn có thể:
- đòn bẩy các chức năng thế hệ mô hình lớp và bộ điều khiển cơ sở dữ liệu cấp cao để xây dựng ứng dụng của bạn, hoặc
- đòn bẩy điều khiển cơ sở dữ liệu duy nhất, và xây dựng các lớp học tùy chỉnh của bạn mà giao tiếp với các phương pháp xử lý của bộ điều khiển, hoặc
- chỉ đơn giản là vượt qua
NSString
truy vấn vào đối tượng cơ sở dữ liệu hoặc điều khiển cơ sở dữ liệu đối tượng để xử lý
vì vậy, bạn không được đo ni vào sử dụng LabQLite như một ORM ... không phải hoàn toàn cũng không một phần. Thậm chí còn có các loại đối tượng được gọi là LabQLiteStipulation
s, đóng gói logic cho các điều kiện. Vì vậy, có sự linh hoạt ở đó, quá.
Theo dõi số https://twitter.com/labitorysupport/ để biết các cập nhật.
Tóm tắt
Các thế mạnh của LabQLite là:
- hội nhập Speedy của cơ sở dữ liệu
- Tăng dự án bảo trì
- hệ nhanh của mô hình đối tượng
- linh hoạt giữa cao, trung và truy cập cấp thấp vào SQLite
- thân thiện với các hệ thống di sản
- Vâng ghi nhận trong mã
- Respectably đơn vị thử nghiệm
Cậu nhìn vào lõi dữ liệu? http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html –
nếu bạn định thiết kế lại cơ sở dữ liệu tôi đồng ý với @SB., bạn nên thử Core Data, nhưng nếu bạn định sử dụng cùng một cơ sở dữ liệu (hoặc cấu trúc cơ sở dữ liệu) từ các thư viện mà bạn đề cập đến, tôi đã làm việc với fmdb với kết quả khá tốt, nó nhanh và dễ sử dụng (tôi chưa thử nghiệm những cái khác) – tkanzakic
@tkanzakic Cảm ơn lời khuyên tuyệt vời của bạn. Việc thiết kế lại cơ sở dữ liệu là điều cuối cùng chúng ta muốn làm khi chúng ta đã có sẵn cơ sở dữ liệu từ ứng dụng C# hiện tại. –