Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.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 Xcode-[[uuuu NSArrayM isEqualToString:]:发送到实例0x7a1248d0的无法识别的选择器-如何修复?_Ios_Json_Xcode_Nsarray - Fatal编程技术网

Ios Xcode-[[uuuu NSArrayM isEqualToString:]:发送到实例0x7a1248d0的无法识别的选择器-如何修复?

Ios Xcode-[[uuuu NSArrayM isEqualToString:]:发送到实例0x7a1248d0的无法识别的选择器-如何修复?,ios,json,xcode,nsarray,Ios,Json,Xcode,Nsarray,在我展示我的代码之前,请耐心等待,我对stackoverflow和Objective都是新手 当我尝试以下操作时,我的问题出现了: NSLog(@"%@",self.side.article.categories); NSLog(@"%@",side_.article.categories); [NSString stringWithFormat:@"%@",self.side.article.categories]; if ([self.side.article.categories is

在我展示我的代码之前,请耐心等待,我对stackoverflow和Objective都是新手

当我尝试以下操作时,我的问题出现了:

NSLog(@"%@",self.side.article.categories);

NSLog(@"%@",side_.article.categories);
[NSString stringWithFormat:@"%@",self.side.article.categories];

if ([self.side.article.categories isEqualToString:@"4"]) {          //here
 [[IOLSession defaultSession] logEventWithType:IOLEventTypeView
 state:IOLViewAppeared
 category:@"art_meldungen-des-tages"
 comment:nil];}    
我尝试的是从JSON获取类别的值:

"articles": [{"id":xxx,"date":xxx,"lastChanged":xxx,"weblink": 
"xxx","annotation":"xxx","imageURL": "xxx",
"thumbnailurl": "xxx","categories": [3], ...
现在我如何取它们:

- (void)updateArticlesWithParsedContent:(NSDictionary *)parsedContent
{
NSManagedObjectContext *managedObjectContext = self.managedObjectContext;

NSFetchRequest *existingArticlesFetchRequest = [[[NSFetchRequest alloc] init] autorelease];
existingArticlesFetchRequest.entity = [NSEntityDescription entityForName:@"Article" inManagedObjectContext:managedObjectContext];
NSArray *existingArticlesFetchResult = [managedObjectContext executeFetchRequest:existingArticlesFetchRequest error:NULL];
NSMutableDictionary *existingArticles = [NSMutableDictionary dictionaryWithObjects:existingArticlesFetchResult forKeys:[existingArticlesFetchResult valueForKey:@"articleID"]];

NSMutableSet *articlesInParsedContentSet = [NSMutableSet set];

NSArray *parsedArticles = [parsedContent objectForKey:@"articles"];
for (NSDictionary *parsedArticle in parsedArticles) {

    NSNumber *articleID = [parsedArticle objectForKey:@"id"];

    Article *article = [existingArticles objectForKey:articleID];


         if (!article) {
        article = [NSEntityDescription insertNewObjectForEntityForName:@"Article" inManagedObjectContext:managedObjectContext];
        article.articleID = articleID;
        [existingArticles setObject:article forKey:articleID];
    }

    [articlesInParsedContentSet addObject:article];

    NSDate *parsedLastChanged = [NSDate dateWithTimeIntervalSince1970:[[parsedArticle objectForKey:@"lastChanged"] doubleValue]];

    if (!article.lastChanged || ([article.lastChanged compare:parsedLastChanged] == NSOrderedAscending)) {

        article.date = [NSDate dateWithTimeIntervalSince1970:[[parsedArticle objectForKey:@"date"] doubleValue]];
        article.annotation = [parsedArticle objectForKey:@"annotation"];
        article.weblink = [self baselineURLStringAppendedWithString:[parsedArticle valueForKey:@"weblink"]];
        article.imageURL = [self baselineURLStringAppendedWithString:[parsedArticle valueForKey:@"imageURL"]];
        article.thumbnailURL = [self baselineURLStringAppendedWithString:[parsedArticle valueForKey:@"thumbnailURL"]];
  -->      article.categories=[parsedArticle objectForKey:@"categories"];
还有我的文章

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

@class Side;

@interface Article : NSManagedObject

@property (nonatomic, retain) NSString * annotation;
@property (nonatomic, retain) NSNumber * articleID; 
@property (nonatomic, retain) NSDate * date;
@property (nonatomic, retain) NSString * imageURL;
@property (nonatomic, retain) NSDate * lastChanged;
@property (nonatomic, retain) NSString * thumbnailURL;
@property (nonatomic, retain) NSString * weblink;
@property (nonatomic, retain) NSNumber * hasBeenRead;
@property (nonatomic, retain) NSSet *sides;
@property (nonatomic, retain) NSString *categories;
@end

@interface Article (CoreDataGeneratedAccessors)

- (void)addSidesObject:(Side *)value;
- (void)removeSidesObject:(Side *)value;
- (void)addSides:(NSSet *)values;
- (void)removeSides:(NSSet *)values;
@end
我刚刚得到:lldb EXT\u BAD\u访问代码=2,地址=0x4

PS:我还更改了@property非原子,保留NSString*类别;若要@property nonatomic,请保留NSNumber*categories

解决办法是:

    if ([NSString stringWithFormat:@"%@", [self.side.article.categories objectAtIndex:0]]  isEqual:@"4") {...    

类别对象属于数组类型。因此,您需要从数组中获取对象。类别对象不是NSString类型。您应该将代码用作:

[NSString stringWithFormat:@"%@", [self.side.article.categories objectAtIndex:0]];

正如@Unnati所说,在JSON中,categories对象不是字符串。对象文章模型中的类别类型错误。

类别似乎包含数组对象。尝试使用objectAtIndex.categories:[3]尝试使用objectAtIndex和数字值而不是字符串值我将类别的类型更改为NSNumber,现在我只得到lldb EXT_BAD_ACCESS Code=2,Adress=0x4Categories是一个NSArray,[categories objectAtIndex[i]]返回一个NSInteger值而不是NSString,如@Huy Nghia在评论中所说的。ok,我先到dump去了解,但这解决了我的问题:我做到了:如果[nsstringwithformat:@%@[self.side.article.categories objectAtIndex:0]]isEqual:@4{。。。
[NSString stringWithFormat:@"%@", [self.side.article.categories objectAtIndex:0]];