我从来没有搞过iOS,所以这对我来说都是新手。我正在尝试将SQLClient导入到现有的Xcode项目中。 (我需要从iOS应用程序中启动INSERT。)
https://github.com/martinrybak/SQLClient
我已经尝试了Martin通过cocoapods
和手册列出的两种安装方法,但我无法工作。
对于选项#1)一切正常,直到我尝试pod install
并遇到
分析依赖关系
[!]依赖项SQLClient (~> 0.1.3)
未在任何具体目标中使用。
我希望命令生成一个名为SQLClient.xcworkspace
的文件。我不确定这个新的xcworkspace文件是否意在替换我的主项目xcode文件。但由于它不起作用,我转到选项#2。
对于选项#2,我不确定将内容放在何处。 (马丁是/SQLClient/SQLClient/SQLClient/SQLClient
还是/SQLClient/SQLClient/SQLClient
?)
我应该只复制文件还是整个文件夹? 内容是否与我的原始xcode项目文件或子文件夹在同一级别进入我的项目? 我尝试了几个变种,但我承认不知道SQLClient文件/文件夹应放在哪里与我的其他项目文件有关。
我也试过搞乱我的桥文件但是我无法正确加载它。
我有一些时间(2天)来解决这个问题所以我愿意学习,但我需要一些指导。
这是我现有Xcode项目的图片以及导入SQLClient的最新尝试。
答案 0 :(得分:3)
看起来您的项目中的所有文件都已正确。
要检查的事情。
如果您在将object-c文件拖到项目中时创建了桥文件,那么您只需要将#import "SQLClient.h"
添加到桥文件中。如果您手动创建了桥文件,请确保将其添加到Build Settings - Objective-C Bridging Header。
确保您的目标 - 通用链接框架和库libiconv.tb
和libfreetds.a
Swift 3
class testViewController: UIViewController, SQLClientDelegate {
// Handles errors from the SQLClient
func error(_ error: String!, code: Int32, severity: Int32) {
print("\(error!) \(code) \(severity)")
}
//MARK: Lifecyle
override func viewDidLoad() {
super.viewDidLoad()
let client = SQLClient.sharedInstance()!
client.delegate = self
client.connect("ServerNameOrIP", username: "cool", password: "cool", database: "database") { success in
client.execute("SELECT * FROM table", completion: { (_ results: ([Any]?)) in
for table in results as! [[[String:AnyObject]]] {
for row in table {
for (columnName, value) in row {
print("\(columnName) = \(value)")
}
}
}
client.disconnect()
})
}
}
}
创建了一个示例项目here
答案 1 :(得分:1)
在更改pod文件以包含目标后,我能够获得安装选项#1。
target "TargetName" do
pod 'SQLClient', '~> 0.1.3'
end
答案 2 :(得分:0)
我手动下载了SQLClient,它对我有用。您将在此处获得从swift项目进行连接的步骤-https://github.com/salmasumona/Call-SP-from-iOS-project-using-SQLClient
答案 3 :(得分:0)
SWIFT 5
enter image description here在Swift项目中使用Obj-C的最佳方法是使用桥接头文件,而我对SQLCLient所做的就是从SQL客户端拖放文件,然后Xcode会询问您是否要创建桥接头文件,请选择是。
在桥接头文件中,导入“ SQLClient.h”,您可以从此处构建项目,所有内容均应编译。然后,您可以像上面和在.connect内一样创建一个SQLClient对象,确保完成处理程序检查它是否成功,然后在闭包内部可以调用client.execute,如果在此处将SQL命令作为字符串,则可以从此处调用并将数据用作.execute完成块中的变量,如果您打印此数据变量,则将从SQL Server返回所有数据。它以JSON返回,因此您可以从此处使用JSON序列化进行转换。
如果您有任何疑问,请随时给我发消息,我将返回一个屏幕截图,以说明我的代码,以便为您提供帮助!