如何从cocoapods导入带有名称中的点的库?

时间:2016-12-20 10:55:05

标签: ios swift cocoapods

我尝试链接的库是:

pod 'Socket.IO-Client-Swift'

但是当我尝试在Bridging-Header中导入此内容时:

@import Socket.IO-Client-Swift;

我收到以下错误:

  

模块名称后的预期;   未找到模块Socket

enter image description here

我知道如何才能让它发挥作用?

1 个答案:

答案 0 :(得分:2)

正如我评论的那样,它应该是@import SocketIO而不是@import Socket.IO-Client-Swift;

如何/为何?导入的广告连播是'Socket.IO-Client-Swift'但不是'SocketIO',那背后的逻辑是什么?

嗯,实际上 Socket.IO-Client-Swift 是存储库(pod)的名称,但不是module名称。

虽然socket.io-client-swift的source directory中有一个SocketIOClient.swift文件(并且它包含SocketIOClient文件/类,您应该直接使用它来创建套接字),但你不是直接导入它;它类似于以下情况:当您想要使用Date struct -for example-时,您应该导入Foundation

侧栏说明:

您知道这是合法(有效)代码:

let date = Foundation.Date()

但由于Foundation是隐式导入的,因此我们通常会这样做:

let date = Date()

所有框架都是一样的,例如UIKit

let view = UIKit.UIView()

:)

结束侧栏。

那么,你导入的是什么(SocketIO)是包含所有需要文件的模块的名称 - 包括SocketIOClient.swift - 让它按原样运行,它出现在{import Alamofire { 3}}文件:

  

让package = Package(       名称:“SocketIO”)

包的名称是 SocketIO

另一个例子:

Alamofire :存储库的名称是Alamofire。此外,包的名称是Alamofire!再次,你可以看到它的Package.swift

  

让package = Package(       名称:“Alamofire”,       排除:[“测试”])

因此,存储库的名称及其包名称是相同的,这就是您Alamofire.request("https://httpbin.org/get")并将其用作List<string> countryList = new List<string>(); countryList.Add("Select country"); countryList.Add("USA"); countryList.Add("Germany"); var layoutGridView = new GridView(); //Create layout for ListView. // Create Display Template and Bindings FrameworkElementFactory nameFactory = new FrameworkElementFactory(typeof(TextBlock)); nameFactory.Name = "tbkName"; nameFactory.SetBinding(TextBlock.TextProperty, new Binding("Name")); // Assign Property Binding paths for the collection bound to ListView. FrameworkElementFactory comboFactory = new FrameworkElementFactory(typeof(ComboBox)); comboFactory.Name = "cmbCountry"; comboFactory.SetValue(ComboBox.ItemsSourceProperty, countryList); // Assign default list to display in dropdown. comboFactory.SetBinding(ComboBox.SelectedValueProperty, new Binding("Country")); // Assign value to select from dropdown. FrameworkElementFactory checkBoxFactory = new FrameworkElementFactory(typeof(CheckBox)); checkBoxFactory.Name = "chkSelected"; checkBoxFactory.SetValue(CheckBox.IsCheckedProperty, new Binding("IsSelected")); //Define columns with the corresponding cell templates layoutGridView.Columns.Add(new GridViewColumn { Header = "Name", CellTemplate = new DataTemplate { VisualTree = nameFactory //First(text) column display template } }); layoutGridView.Columns.Add(new GridViewColumn { Header = "State", CellTemplate = new DataTemplate { VisualTree = comboFactory //Second(Combobox) column display template } }); layoutGridView.Columns.Add(new GridViewColumn { Header = "Is Selected", CellTemplate = new DataTemplate { VisualTree = checkBoxFactory //Third(Checkbox) column display template } }); listView1.View = layoutGridView; // Assign the display template to ListView. //Data Binding to listview. List<MyData> data = new List<MyData> { new MyData { Name="Abc", Country= "USA", IsSelected=true}, new MyData { Name="Def", Country= "Germany", IsSelected=false} }; listView1.ItemsSource = data; //Assign data to ListView's ItemsSource property. 的原因。

真的希望它有所帮助。