我尝试链接的库是:
pod 'Socket.IO-Client-Swift'
但是当我尝试在Bridging-Header
中导入此内容时:
@import Socket.IO-Client-Swift;
我收到以下错误:
模块名称后的预期
;
未找到模块Socket
我知道如何才能让它发挥作用?
答案 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.
的原因。
真的希望它有所帮助。