Не удалось создать собственный экземпляр типа 'FWSImageRepo'. нативный класс не был загружен

Я пытаюсь связать нативный фреймворк iOS, который использует AFNetworking Изначально я строю его как прототип, чтобы перенести часть IP-адреса ObjC моей компании, чтобы он был связан с Xamarin и в будущем.

Я начал с создания простого класса, который загружает котят с помощью AFNetworking в UIImageView

Заголовочный файл:

#import <UIKit/UIKit.h>

@interface FWSImageRepo : NSObject
+(UIImageView *)imageViewFromURLString:(NSString *)urlString;
@end

Реализация

@implementation FWSImageRepo

+(UIImageView *)imageViewFromURLString:(NSString *)urlString{

    UIImageView *imageView = [[UIImageView alloc] init];

    NSURL *imageUrl= [NSURL URLWithString:@"http://www.pets4homes.co.uk/images/articles/1334/large/6-health-issues-to-watch-for-in-young-kittens-52f62cff5cabb.jpg"];

    if(imageUrl != nil) {
        [imageView setImageWithURL:imageUrl];
    }

    return imageView;
}

@end

Я создал цель компилятора фреймворка и скопировал фреймворк в проект Xamarin iOS. Я использовал Objective Sharpie для создания привязок ниже

// @interface FWSImageRepo : NSObject
[BaseType(typeof(NSObject))]
interface FWSImageRepo
{
    // +(UIImageView *)imageViewFromURLString:(NSString *)urlString;
    [Static]
    [Export("imageViewFromURLString:")]
    UIImageView ImageViewFromURLString(string urlString);
}

Все они связаны, как указано в binding projectинфраструктура связана как нативная ссылка, а на проект привязок ссылается одностраничное приложение Xamarin для iOS.

теперь простая инициализация класса var fwrepo = new FWSImageRepo(); указывает на то, что фреймворк вообще не нравится проекту. ошибка не меняется, даже если я не связываю фреймворки в проекте bindings

Could not create an native instance of the type 'FWSImageRepo': the native class hasn't been loaded. It is possible to ignore this condition by setting ObjCRuntime.Class.ThrowOnInitFailure to false.

Есть ли причина проверить, что происходит? Я перепробовал все и исчерпал свой поиск в Интернете. Насколько я искал, нигде нет примеров этого требования, и практически нет направления. Я пробовал решения от других, сталкивающихся с теми же проблемами. как мне искать где я ошибся?

Вот ссылка на созданные мной проекты. https://drive.google.com/open?id=0B2f9RlRxZKoZcElIRkpLZnF6WVU

2 ответа

Это не совсем решает проблему, но благодаря @chris, заставляющему меня понять, что проблема заключается в отсутствии загрузки класса, решение было на самом деле в изменении настроек сборки iOS для соответствия следующим вариантам

Я все еще могу получить доступ к методу статически, как показано ниже:

// @interface FWSImageRepo : NSObject
[BaseType(typeof(NSObject))]
public interface FWSImageRepo
{
    // +(UIImageView *)imageViewFromURLString:(NSString *)urlString;
    [Static]
    [Export("imageViewFromURLString:")]
    UIImageView ImageViewFromURLString(string urlString);
}

и получить к нему доступ, как это

var imageview = FWSImageRepo.ImageViewFromURLString("");

Любая идея, почему я не могу использовать его в качестве экземпляра (я удалил атрибут [Static]?

Не удалось создать собственный экземпляр типа "FWSImageRepo": собственный класс не был загружен. Можно игнорировать это условие, установив для ObjCRuntime.Class.ThrowOnInitFailure значение false.

Это говорит о том, что соответствующая библиотека не была загружена. Я бы прогулялся по документации:

https://developer.xamarin.com/guides/ios/advanced_topics/native_interop/

чтобы определить, где настройки проекта не загружаются в нативную библиотеку.

Другие вопросы по тегам