2016-07-25 11 views
1

Ich versuche, ein natives iOS-Framework zu verknüpfen, das intern AFNetworking verwendet, ich baue es zunächst als Prototyp, um einige der ObjC IP meines Unternehmens zu verschieben, um auch mit Xamarin verknüpfbar zu sein in der Zukunft.Es konnte keine native Instanz vom Typ 'FWSImageRepo' erstellt werden. Die native Klasse wurde nicht geladen

Ich begann durch eine einfache Klasse machen, die Kätzchen mit AFNetworking in ein UIImageView lädt

Headerdatei:

#import <UIKit/UIKit.h> 

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

Implementierung

@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 

ich einen Rahmen Compiler Ziel erstellt und I‘ Ich habe das Framework in das Xamarin iOS-Projekt kopiert. Ich benutzte Ziel Sharpie die Bindungen unter

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

Alle diese sind verbunden zu erzeugen, wie in einem binding project angewiesen wird der Rahmen als native Referenz verknüpft und die Bindungen Projekt wird von einer einzigen Seite Xamarin iOS-App verwiesen.

jetzt eine bloße Initialisierung der Klasse var fwrepo = new FWSImageRepo(); zeigt mir, dass das Framework überhaupt nicht auf das Projekt gefallen ist. der Fehler ändert sich nicht, auch wenn ich Projekt nicht über die Rahmenbedingungen in den Bindungen verknüpfen

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. 

Gibt es Gründe, um zu überprüfen, was los ist? Ich habe alles ausprobiert und meine Suche online ausgeschöpft. Es gibt kein Beispiel für diese Anforderung irgendwo, soweit ich gesucht habe und kaum eine Richtung damit. Ich habe versucht, die Lösungen von den anderen mit den gleichen Problemen konfrontiert. Wie suche ich wo ich falsch gelaufen bin?

Hier ist ein Link für die Projekte, die ich erstellt habe https://drive.google.com/open?id=0B2f9RlRxZKoZcElIRkpLZnF6WVU

Antwort

0

konnte kein nativer Instanz des Typs ‚FWSImageRepo‘ erstellen: die native Klasse wurde nicht eingelegt. Es ist möglich, diese Bedingung zu ignorieren, indem Sie ObjCRuntime.Class.ThrowOnInitFailure auf false festlegen.

Dies deutet darauf hin, dass die betreffende native Bibliothek nicht geladen wurde. Ich würde zu Fuß durch die Dokumentation:

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

, um zu bestimmen, wo Sie Einstellungen Projekt nicht in der nativen Bibliothek geladen werden.

+0

Ja, es klingt auch für mich, aber ich kann nicht genau feststellen, wo das Problem liegt. Danke für den Link. –

1

dies das Problem nicht genau lösen, aber dank macht mir @ Chris erkennen, dass es ein Problem ist mit der Klasse wird nicht geladen, die Lösung war eigentlich die iOS-Einstellungen zu modifizieren bauen

die folgenden Optionen anzupassen

ich bin nach wie vor nur in der Lage, das Verfahren statisch zugreifen zu können, wie unten:

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

und greifen sie wie diese

var imageview = FWSImageRepo.ImageViewFromURLString(""); 

eine Idee, warum ich es nicht als Instanz verwenden kann (Ich habe das Attribut [Static] entfernt?

Verwandte Themen