Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios [\uu NSCFDictionary Enumerative ObjectsUsingBlock:]:发送到实例0x101918a10'的无法识别的选择器;_Ios_Xcode_Json_Core Data - Fatal编程技术网

Ios [\uu NSCFDictionary Enumerative ObjectsUsingBlock:]:发送到实例0x101918a10'的无法识别的选择器;

Ios [\uu NSCFDictionary Enumerative ObjectsUsingBlock:]:发送到实例0x101918a10'的无法识别的选择器;,ios,xcode,json,core-data,Ios,Xcode,Json,Core Data,我正在从我的json文件中读取jason数据,并且我成功地打印了NSarray类型的arraytsik,现在当我尝试使用EnumerateObjectsSusingBlock循环通过arraytsik时,它给出了错误的OUTPUP或array 0x102114700 2012-12-17 16:59:04.713 tsikzoeMig[6416:303]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因: '-[\uu NSCFDictionary E

我正在从我的json文件中读取jason数据,并且我成功地打印了NSarray类型的arraytsik,现在当我尝试使用EnumerateObjectsSusingBlock循环通过arraytsik时,它给出了错误的OUTPUP或array

0x102114700 2012-12-17 16:59:04.713 tsikzoeMig[6416:303]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因: '-[\uu NSCFDictionary Enumerative Objects UsingBlock:]:无法识别 选择器已发送到实例0x102114700' *第一次抛出调用堆栈: ( 0 CoreFoundation 0x00007fff8a1190a6例外预处理+198 1 libobjc.A.dylib 0x00007fff8a2963f0 objc_异常_抛出+43 2 CoreFoundation 0x00007fff8a1af6ea-[NSObject(NSObject)不识别选择器:+186 3 CoreFoundation 0x00007fff8a1075ce转发+414 4 CoreFoundation 0x00007fff8a1073b8\u CF\u转发\u准备\u 0+232 5 tsikzoeMig 0x0000000100001cd3干管+851 6 libdyld.dylib 0x00007fff8acd97e1启动+0 7???0x0000000000000001 0x0+1 ) libc++abi.dylib:terminate调用引发异常 (lldb)

我的主.m代码在这里

//  main.m

#import "TsikzoeE.h"
static NSManagedObjectModel *managedObjectModel()
{
    static NSManagedObjectModel *model = nil;
    if (model != nil) {
        return model;
    }

    NSString *path = @"tsikzoe";
    NSURL *modelURL = [NSURL fileURLWithPath:[path stringByAppendingPathExtension:@"momd"]];
    model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

    return model;
}

static NSManagedObjectContext *managedObjectContext()
{
    static NSManagedObjectContext *context = nil;
    if (context != nil) {
        return context;
    }

    @autoreleasepool {
        context = [[NSManagedObjectContext alloc] init];

        NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedObjectModel()];
        [context setPersistentStoreCoordinator:coordinator];

        NSString *STORE_TYPE = NSSQLiteStoreType;

        NSString *path = [[NSProcessInfo processInfo] arguments][0];
        path = [path stringByDeletingPathExtension];
        NSURL *url = [NSURL fileURLWithPath:[path stringByAppendingPathExtension:@"sqlite"]];

        NSError *error;
        NSPersistentStore *newStore = [coordinator addPersistentStoreWithType:STORE_TYPE configuration:nil URL:url options:nil error:&error];

        if (newStore == nil) {
            NSLog(@"Store Configuration Failure %@", ([error localizedDescription] != nil) ? [error localizedDescription] : @"Unknown Error");
        }
    }
    return context;
}

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        // Create the managed object context
        NSManagedObjectContext *context = managedObjectContext();

        // Custom code here...
        // Save the managed object context
        NSError *error = nil;
        if (![context save:&error]) {
            NSLog(@"Error while saving %@", ([error localizedDescription] != nil) ? [error localizedDescription] : @"Unknown Error");
            exit(1);
        }
        NSError* err = nil;

        NSString* dataPath = [[NSBundle mainBundle] pathForResource:@"tsikzoe" ofType:@"json"];
        NSArray* arraytsik = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:dataPath]options:kNilOptions error:&err];

        // array outputing here to check

        NSLog(@"here i am printing the array %@",arraytsik);


        [arraytsik enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {


           TsikzoeE *tsikz = [NSEntityDescription insertNewObjectForEntityForName:@"TsikzoeE"inManagedObjectContext:context];
            tsikz.id = [obj objectForKey:@"id"];
            tsikz.dictionaryType=[obj objectForKey:@"dictionaryType"];
            tsikz.word=[obj objectAtIndex:3];
            tsikz.wordDef=[obj objectForKey:@"wordDef"];
            tsikz.author=[obj objectForKey:@"author"];
            tsikz.authorName=[obj objectForKey:@"authorName"];
            NSError *error;
            if (![context save:&error]) {
                NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
            }
        }];

        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity = [NSEntityDescription entityForName:@"TsikzoeE"
                                                  inManagedObjectContext:context];
        [fetchRequest setEntity:entity];
        NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
        for (TsikzoeE *tsikz in fetchedObjects) {
            NSLog(@"word: %@", tsikz.word);

            NSLog(@"wordDef: %@", tsikz.wordDef);
        }

    }
    return 0;
}
我的json内容是

{"tsik":[{"id":1,"dictionaryType":1,"word":"fgdf","wordDef":"fdgdfg","dateSubmitted":"2012-08-19 00:00:00","author":2,"authorName":"fgfg"},{"id":2,"dictionaryType":1,"word":"༡༠༤༠བསོ།","wordDef":"བསོ་བསོ་ཞེས་པའི་སྒྲའི་ཁྱད་པར་གྱི་མིང༌།","dateSubmitted":"2012-08-19 00:00:00","author":2,"authorName":"དུང་དཀར་ཚིག་མཛོད།"}]}
我的TsikzoeE.h代码

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>


@interface TsikzoeE : NSManagedObject

@property (nonatomic, retain) NSNumber * author;
@property (nonatomic, retain) NSString * authorName;
@property (nonatomic, retain) NSNumber * dictionaryType;
@property (nonatomic, retain) NSNumber * id;
@property (nonatomic, retain) NSString * word;
@property (nonatomic, retain) NSString * wordDef;


@end
JSON数据包含一个字典(带有一个键“tsik”),而不是一个数组

以下措施应能更好地发挥作用:

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:dataPath] options:kNilOptions error:&err];
NSArray *arraytsik = [dict objectForKey:@"tsik"];
EnumerateObjectsSusingBlock
块内部似乎也有问题:
obj
是一个字典,所以

tsikz.word=[obj objectAtIndex:3];
不起作用。也许你的意思是

tsikz.word=[obj objectForKey:@"word"];

注释:您还可以考虑在循环完成后保存被管理对象上下文,而不是为添加的每个项保存它。

你好,马丁,现在我正在从URL中尝试JSON,例如NSURL*URL= [NSURL URLUnSnc:@ ];NSCORCHOR*ROOTROGABORY = [ NSJSONSerialization JSONObjectWithData:[NSData DATA WITH CONTENTSOFURL:url]选项:0错误:&err];NSArray*arrayTsikzoe=[rootDictionary objectForKey:@“tsik”];NSLog(@“arrayTsikzoe为%@”,arrayTsikzoe);但数组打印为空。请帮我输入that@user1838612:rootDictionary的内容是什么?嗨,martin,我粘贴了最新的错误和输出,并更改了主.m文件,请帮助我查找错误,我正在正确打印错误,但有一个与类型相关的错误在tsikz.dictionaryType=[obj objectForKey:@“dictionaryType”];可能是dictionaryType是数字,即why@user1838612:If
[obj objectForKey:@“dictionaryType”]
返回一个字符串,然后您必须将其转换为
NSNumber
,例如,请参阅。感谢martin,它起了作用。事实上,我正在尝试制作一本带有多种语言的藏文ios字典,我已经在网上了。感谢您的帮助
tsikz.word=[obj objectAtIndex:3];
tsikz.word=[obj objectForKey:@"word"];