如何解决从使用Xamarin创建的iOS应用程序调用Azure认知服务时遇到Foundation.MonoTouchException
我正在使用C#SDK呼叫cognitive services image analyzer feature。 C#脚本本身运行良好。但是,当我从Xamarin in C#构建的iOS应用中调用它时,运行时会遇到Foundation.MonoTouchException
。
我认为以下详细信息应有助于更好地理解问题。
这是Viewcontroller.cs的样子:
using System;
using UIKit;
namespace colors
{
public partial class ViewController : UIViewController
{
public ViewController(IntPtr handle) : base(handle)
{
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
string list_of_colors = "";
getColor.TouchUpInside += async (object sender,EventArgs e) => {
// Convert the phone number with text to a number
// using PhoneTranslator.cs
list_of_colors = await ApiCall.AnalyzeImageUrl(
URLholder.Text);
display.Text = list_of_colors;
};
}
public override void DidReceiveMemoryWarning()
{
base.DidReceiveMemoryWarning();
// Release any cached data,images,etc that aren't in use.
}
}
}
这是apiCall.cs的样子:
using System;
using System.Collections.Generic;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Threading;
using System.Linq;
namespace colors
{
public static class ApiCall
{
/*
* AUTHENTICATE
* Creates a Computer Vision client used by each example.
*/
public static ComputerVisionClient Authenticate(string endpoint,string key)
{
ComputerVisionClient client =
new ComputerVisionClient(new ApiKeyServiceClientCredentials(key))
{ Endpoint = endpoint };
return client;
}
public static async Task<string> AnalyzeImageUrl(string raw)
{
// Add your Computer Vision subscription key and endpoint to your environment variables.
// Close/reopen your project for them to take effect.
string subscriptionKey = "COMPUTER_VISION_SUBSCRIPTION_KEY";
string endpoint = "COMPUTER_VISION_ENDPOINT";
// Create a client
ComputerVisionClient client = Authenticate(endpoint,subscriptionKey);
IList<VisualFeatureTypes> features = new List<VisualFeatureTypes>()
{
VisualFeatureTypes.Color
};
Console.WriteLine($"Analyzing the image {Path.GetFileName(raw)}...");
Console.WriteLine();
// Analyze the URL image
ImageAnalysis results = await client.AnalyzeImageAsync(raw,features);
return string.Join(",",results.Color.DominantColors);
}
}
}
此帖子是我能找到的最接近解决方案的帖子,但没有帮助。我不喜欢这种访问天蓝色认知服务的方法。我愿意接受其他方法来访问iOS应用中的天蓝色认知服务(如果可用)。但这是首选。
这是我第一次尝试使用iOS应用程序和C#,请放轻松。
编辑:这是堆栈跟踪。
eason: -[ViewController GetColor_TouchUpInside:]: unrecognized selector sent to instance 0x7fc1d0d10540
Native stack trace:
0 CoreFoundation 0x00007fff23e3de6e __exceptionPreprocess + 350
1 libobjc.A.dylib 0x00007fff512539b2 objc_exception_throw + 48
2 CoreFoundation 0x00007fff23e5eb94 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 UIKitCore 0x00007fff49354af0 -[UIResponder doesNotRecognizeSelector:] + 302
4 CoreFoundation 0x00007fff23e4286c ___forwarding___ + 1436
5 CoreFoundation 0x00007fff23e44b58 _CF_forwarding_prep_0 + 120
6 UIKitCore 0x00007fff49326c1d -[UIApplication sendAction:to:from:forEvent:] + 83
7 UIKitCore 0x00007fff48cd5baa -[UIControl sendAction:to:forEvent:] + 223
8 UIKitCore 0x00007fff48cd5ef2 -[UIControl _sendActionsForEvents:withEvent:] + 396
9 UIKitCore 0x00007fff48cd4e63 -[UIControl touchesEnded:withEvent:] + 497
10 UIKitCore 0x00007fff49362508 -[UIWindow _sendTouchesForEvent:] + 1359
11 UIKitCore 0x00007fff4936428d -[UIWindow sendEvent:] + 4501
12 UIKitCore 0x00007fff4933e6d1 -[UIApplication sendEvent:] + 356
13 UIKitCore 0x00007fff493c94ce __dispatchPreprocessedEventFromEventQueue + 7628
14 UIKitCore 0x00007fff493cc692 __handleEventQueueInternal + 6584
15 UIKitCore 0x00007fff493c2f35 __handleHIDEventFetcherDrain + 88
16 CoreFoundation 0x00007fff23da1c91 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
17 CoreFoundation 0x00007fff23da1bbc __CFRunLoopDoSource0 + 76
18 CoreFoundation 0x00007fff23da1394 __CFRunLoopDoSources0 + 180
19 CoreFoundation 0x00007fff23d9bf8e __CFRunLoopRun + 974
20 CoreFoundation 0x00007fff23d9b8a4 CFRunLoopRunSpecific + 404
21 GraphicsServices 0x00007fff38c39bbe GSEventRunModal + 139
22 UIKitCore 0x00007fff49325968 UIApplicationMain + 1605
23 ??? 0x00000001112e5035 0x0 + 4583215157
24 ??? 0x00000001112e4d83 0x0 + 4583214467
25 ??? 0x00000001106f8943 0x0 + 4570712387
26 colors 0x000000010ab8b2b1 mono_jit_runtime_invoke + 1569
27 colors 0x000000010aca3e48 mono_runtime_invoke_checked + 136
28 colors 0x000000010aca92c5 mono_runtime_exec_main_checked + 117
29 colors 0x000000010aaf718c mono_jit_exec + 364
30 colors 0x000000010ada2ccd xamarin_main + 2685
31 colors 0x
堆栈跟踪,由@Jason请求
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。