如果我在NSData中有图像数据,如下从图像中提取,我该如何将这个NSData对象转换为字节数组?
NSData data = NSData.FromUrl(NSUrl.FromString(urlString));
Run Code Online (Sandbox Code Playgroud) 我正在实现IListSource,需要一个GetList()具有以下签名的方法:
IList GetList()
Run Code Online (Sandbox Code Playgroud)
我正在使用.NET框架2,我想要返回一个实现IList的对象,如下所示:
public System.Collections.IList GetList()
{
return this._mydata; // Implements IList<MyDataRow>
}
Run Code Online (Sandbox Code Playgroud)
但我得到一个编译错误说:Cannot implicitly convert type MyData to System.Collections.IList.
如果我创建一个新的类型列表List<MyDataRow>,填充它并返回此列表对象,那么它的工作原理.换句话说,这有效:
public System.Collections.IList GetList()
{
List<MyDataRow> list = new List<MyDataRow>();
foreach (MyDataRow row in this._mydata)
{
list.Add(row);
}
return list;
}
Run Code Online (Sandbox Code Playgroud)
但是,为了从类型IList<T>到它来重新创建列表似乎效率非常低IList.为什么我可以退货List<MyDataRow>' from 'GetList(),但不是IList<MyDataRow>?有没有人知道如何在IList<MyDataRow>没有重新填充新清单的情况下退货?
更新:
该_mydata成员变量声明:
private MyData _mydata;
Run Code Online (Sandbox Code Playgroud)
并MyData宣布:
public class MyData : IList<MyDataRow> …Run Code Online (Sandbox Code Playgroud) 我是新手SVG,很抱歉,如果这是一个noob问题.我试图弄清楚如何使用引用图像的全宽和高度来显示图像.我正在使用D3.js构建图表,我希望在角落里出现一个徽标.问题是图像href将使用javascript设置,因此被引用的图像永远不是固定的宽度或高度.我想要的是要在其全宽和高度上显示的图像,而不是按比例放大或缩小.我所希望的是能够根据图像的内容自动设置图像的宽度和高度,例如将图像width和height属性设置为auto.然而,这只会导致图像无法显示.
d3.select("body")
.append("svg")
.attr('id','mySVG')
.attr({
"width": "100%",
"height": "100%"
})
.attr("viewBox", "0 0 " + width + " " + height )
.attr("preserveAspectRatio", "none");
d3.select('#mySVG')
.append('image')
.attr('image-rendering','optimizeQuality')
.attr('height','auto') <--- This does not work
.attr('width','auto') <--- This does not work
.attr('xlink:href', logoUrl)
.attr('x','0')
.attr('y','0');
Run Code Online (Sandbox Code Playgroud)
我如何指定SVG图像width并且height必须根据参考图像大小动态确定?
我想在NSUserDefaults中注册默认值,以便用户设置不会为未由用户显式设置的值返回空值,而是返回设置包中指定的默认值.我在这里读到:
如何在不覆盖现有值的情况下使用NSUserDefaults注册用户默认值?
应该在applicationDidFinishLaunching中执行以下内容:
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Defaults" ofType:@"plist"]]];
Run Code Online (Sandbox Code Playgroud)
如何在MonoTouch中完成?
我在MonoTouch中寻找url escape和unescape函数.基本上我正在寻找方法stringByReplacingPercentEscapesUsingEncoding的MonoTouch等价物,如在objective-c代码的以下行中:
NSString *args = [(NSString*)[components objectAtIndex:3]
stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)
我本以期能够将其翻译成这样的东西:
string args = URL.Unescape(components[3]);
Run Code Online (Sandbox Code Playgroud)
MonoTouch中是否存在URL转义/ unescape函数,还是我必须自己滚动?
我已经定义了一个UIWebViewDelegate类并在我的UIWebView的Delegate属性中实例化了它,但是当webview加载请求时,没有调用ShouldStartLoad方法.我究竟做错了什么?
这是定义我的UIWebViewDelegate和我的UIWebView的代码:
public class MyWebViewDelegate: UIWebViewDelegate
{
private UIWebView _view;
public MyWebViewDelegate (UIWebView view)
{
_view = view;
}
public override bool ShouldStartLoad (UIWebView webView,
MonoTouch.Foundation.NSUrlRequest request,
UIWebViewNavigationType navigationType)
{
System.Console.WriteLine("Starting load");
return true;
}
}
public class MyWebView : UIWebView
{
private static MyWebView _instance = new MyWebView ();
private MyWebView () : base()
{
this.Delegate = new MyWebViewDelegate(this);
}
public static MyWebView Instance {
get { return _instance; }
}
public void Load ()
{
this.LoadRequest (new NSUrlRequest(NSUrl.FromString("http://myurl"), …Run Code Online (Sandbox Code Playgroud) 我遇到了一个问题,即反射方法GetMethod没有为类返回静态方法.这只是在实际的iPhone上出错了; 在模拟器上它正常工作.我尝试过以下方法:
MethodInfo methInfo = _type.GetMethod (methodName);
Run Code Online (Sandbox Code Playgroud)
和
MethodInfo methInfo = _type.GetMethod (methodName, System.Reflection.BindingFlags.Static);
Run Code Online (Sandbox Code Playgroud)
但这些都不返回methodName中指定的方法.指定的方法确实存在,因为它在模拟器上工作.我已经使用调试器确认我的成员变量_type确实包含正确的类类型引用.我尝试检索的方法在类中声明为public.
有没有人之前遇到过这个或者知道为什么这会在模拟器上运行而不是在实际的iphone上运行?
我有一个WinForms应用程序,我已经接管了它,它是使用Visual Studio 2005和VB.Net构建的.该应用程序使用Access数据库.它作为独立应用程序安装时运行正常,但应用程序的安装CD也允许网络安装,这是我目前遇到问题的地方.
为了测试网络安装,我在服务器(Windows Server 2003 SP2)上创建了一个文件夹,并将Access数据库复制到此文件夹.我为此文件夹创建了一个共享,并为每个人提供了对该共享的完全权限.然后在工作站上我安装了应用程序并给出了数据库的路径,如下所示:
\\ MYSERVER\myshare的\ MYDB.MDB
(此处的安装步骤按照安装CD上的说明进行)
我安装它的工作站是Windows 7旗舰版.当我运行应用程序时,我在应用程序尝试读取数据库文件时收到标题中给出的错误消息.我已经确认我能够写入服务器上的共享文件夹,所以我认为这不是权限问题.此外,数据库文件根本没有使用,所以它绝对不是专门打开的.任何人都知道可能导致这种情况的原因以及我可以尝试做些什么来使其正常工作?
更新:
我已经在全新安装的Windows XP SP3的计算机上测试了工作站安装,并且能够毫无问题地访问数据库文件.因此,我得到的这个错误似乎是某种特定于Windows 7的错误.在Windows 7上是否存在Oledb驱动程序的已知问题?我的Windows 7版本,顺便说一句是32位.
我有以下Linq lambda表达式:
private IEnumerable<SubjectSelectorSubjectGroup> GetSubjectList()
{
User user = db.Users.Find(WebSecurity.CurrentUserId);
return db.RequiredSubjects.Where(r => !r.Subject.Name.Contains("Home"))
.GroupBy(r => r.Subject)
.OrderByDescending(r => r.Count())
.Select(r => new SubjectSelectorSubjectGroup()
{
SubjectId = r.Key.SubjectId,
SubjectName = r.Key.Name,
IsInFavourites = HttpContext.Current.Request.IsAuthenticated &&
(user.Elective1 != null && user.Elective1.SubjectId == r.Key.SubjectId ||
user.Elective2 != null && user.Elective2.SubjectId == r.Key.SubjectId ||
user.Elective3 != null && user.Elective3.SubjectId == r.Key.SubjectId),
Occurrences = r.Count()
});
}
Run Code Online (Sandbox Code Playgroud)
当用户未登录时user,此函数中的变量为null.这不应该是一个问题,因为短路布尔评估应该处理这个问题.问题是,它没有!相反,System.NullReferenceException抛出了一个.
当用户为null时HttpContext.Current.Request.IsAuthenticated返回false.我通过注释引用user变量的括号部分来检查这一点,然后表达式正确评估.
有没有人知道为什么在这种情况下Linq to Sql尝试取消引用 …
我们想提交我们的Xamarin申请以供审查,Apple Appstore并且在提交过程中会询问以下问题:
此应用程序是否使用广告标识符 (IDFA)?广告标识符 (IDFA) 是每个 iOS 设备的唯一 ID,是提供有针对性的广告的唯一方式。用户可以选择限制其 iOS 设备上的广告定位。
它还给出了一个非常可怕的红色警告:
确保为广告标识符 (IDFA) 使用选择正确的答案。如果您的应用确实包含 IDFA 并且您选择“否”,则二进制文件将被永久拒绝,您必须提交不同的二进制文件。
这是问题的屏幕截图:

我不确定如何回答这个问题,因为我们的应用程序根本不提供广告服务,但我不确定我们正在使用的任何组件是否正在使用 IDFA,并且考虑到可怕的警告,我不想冒险。
我在 google 上搜索了一些关于这个问题的信息,找到了这篇有用的文章,它解释了在你的代码中搜索什么以确保你没有使用 IDFA。以下是相关内容:
Apple 建议出版商检查代码,包括第三方库,以消除以下任何事件:
类:ASIdentifierManager 选择器:advertisingIdentifier 框架:AdSupport.framework
所以我在我的项目中进行了以下 grep 搜索:
grep -lr "ASIdentifierManager" *
Run Code Online (Sandbox Code Playgroud)
此搜索返回一个结果,说明ASIdentifierManager在 32 位和 64 位版本的Xamarin.iOS.dll.
所以我假设我对这个问题回答“否”是不安全的,因为Xamarin.iOS使用ASIdentifierManager. 即使我们的应用程序不提供广告,是否建议对此问题回答“是”?或者有什么方法可以编译应用程序,以便在ASIdentifierManager中不被引用Xamarin.IOS.dll?