小编dee*_*ter的帖子

更正不同类型的项目数组的JSON模式

我有一个无序的JSON项目数组.根据规范http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.5,下面的json模式将仅验证数组中的对象是否显示为IN THAT ORDER.我不想指定一个订单,只需验证数组中的对象,无论对象的顺序或数量如何.从规范我似乎无法理解这是如何做到的.

"transactions" : {
    "type" : "array",
    "items" : [
        {
            "type" : "object",
            "properties" : {
                "type" : {
                    "type" : "string",
                    "enum" : ["BUILD", "REASSIGN"]
                }
            }
        },
        {
            "type" : "object",
            "properties" : {
                "type" : {
                    "type" : "string",
                    "enum" : ["BREAK"]
                }
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

validation json jsonschema

25
推荐指数
4
解决办法
4万
查看次数

有没有办法在couchdb视图中发出附件数据

我发现在图像显示网站上的数据时使用CouchDB附件非常有用.但是,当我将数据库复制到移动环境时,运行视图然后必须遍历文档以访问其附件是非常低效的.在iOS/Android平台似乎很多更有效地存储数据定期BLOB和有只有一个视图的查询,发出摆在首位的所有文档数据视图的查询访问所有的二进制数据.有没有办法在我的map函数中读取附件DATA,并将其包含在emit语句中.我看到有通过_attachments提供的附件信息,但这不提供对数据的访问.

更新 的主要缺点(在接受的答案不详述)使用BLOB的文件本身,而不是在附件是,当您更新文档,你必须得到整个文档,然后将它张贴回来.如果您不使用附件,则必须获取所有二进制数据,而不是附件.如果您要对文档执行更新,使用附件实际上是设计二进制数据的唯一合理方法.

mobile couchdb

13
推荐指数
1
解决办法
1839
查看次数

在RestKit EntityMapping更新之后,NSFetchedResultsController不读取CoreData实体中更新的派生值

我有一个视图控制器,我在其中创建一个NSFetchedResultsController以在TableView中显示一组CoreData对象.在tableview中查看这些对象时,可以通过调用RestKit getObjectsAtPath来更新它们,它通过响应描述符和RKEntityMapping正确处理,以更新CoreData对象上的字段.但是,此特定实体还具有自定义派生字段 - 实际上是状态机(基于TransitionKit),它读取提供给实体的状态值,并使用服务器提供的状态重新初始化状态机.但是,无论我在哪里重新初始化状态机(awakeFromFetch,willSave,键值观察),当NSFetchedResultsController中的对象副本用于更新相应的表格单元格时(NSFetchResultsController为)时,不会更新此重新初始化状态机.通知该行的变化).要清楚 - 通过RestKit EntityMapping IS更新的值已更新,但状态机(派生值)未更新.这是为什么?

不应该以允许它们计算派生值的方式通知NSFetchedResultsController的对象数组吗?当我在代码中跟踪时,主线程中的awakeFromFetch还没有包含更新的值,并且在willSave或setter中计算我的派生值似乎不会在NSFetchedResultsController持有的对象的实例中创建此派生值.

我已附上我的基本型号代码

#import "VCStateMachineManagedObject.h"

@interface VCStateMachineManagedObject ()

@property (nonatomic, strong) TKStateMachine * stateMachine;

@end



@implementation VCStateMachineManagedObject

@dynamic savedState;
@synthesize stateMachine = _stateMachine;
@synthesize forcedState;

-(id)init {
    self = [super init];
    if(self != nil) {
    }
    return self;
}


- (BOOL)canFireEvent:(id)eventOrEventName {
    return [_stateMachine canFireEvent:eventOrEventName];
}

- (BOOL)fireEvent:(id)eventOrEventName userInfo:(NSDictionary *)userInfo error:(NSError **)error{
   return [_stateMachine fireEvent:eventOrEventName userInfo:userInfo error:error];
}

- (void) assignStatesAndEvents:(TKStateMachine *) stateMachine {
    [NSException raise:@"Invoked abstract method" format:@"Invoked abstract method"];
}

- …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c ios restkit

6
推荐指数
1
解决办法
596
查看次数

RestKit addFetchRequestBlock导致不映射对象

我设置了以下获取请求块来处理孤立对象的删除:

  [objectManager addFetchRequestBlock:^NSFetchRequest *(NSURL *URL) {
    RKPathMatcher *pathMatcher = [RKPathMatcher pathMatcherWithPattern:API_GET_ACTIVE_RIDES];

    NSString * relativePath = [URL relativePath];
    NSDictionary *argsDict = nil;
    BOOL match = [pathMatcher matchesPath:relativePath tokenizeQueryStrings:NO parsedArguments:&argsDict];
    if (match) {
        NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Ride"];
        return fetchRequest;
    }

    return nil;
}];
Run Code Online (Sandbox Code Playgroud)

由于我需要允许用户注销并重新登录,因此我使用以下内容清除核心数据中的所有数据:

 + (void) clearUserData {
    NSError * error = nil;
    [[RKManagedObjectStore defaultStore] resetPersistentStores:&error];
    if(error != nil){
        [WRUtilities criticalError:error];
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我注销并重新登录到我的应用程序,则第一次登录时加载的对象不会从服务器加载.使用RestKit日志记录,我可以看到请求熄灭并从服务器返回正确的数据,但映射似乎完全被跳过,导致没有对象(重新)插入到核心数据中.

如果我删除了我的获取请求块,一切都按照我的预期工作 - clearUserData删除所有数据,并上传登录数据从服务器重新查询并重新加载到核心数据.

我的问题是双重的.我需要更改什么才能获得成功重新加载数据的预期行为,为什么获取请求块(我理解为仅用于删除孤立对象)会对此方案产生影响?

我之前看过这个并且刚刚删除了获取请求块,但我更喜欢使用此功能而不是因为这个问题而跳过它.

ios restkit

3
推荐指数
1
解决办法
612
查看次数

NSError*返回的地址不好 - 为什么?

在下面的代码中,返回时,NSError在XCode中显示类型为"HomeViewController" - 我的一个视图控制器.如果我用双指针做了一些与众不同的事情,这是有道理的,但我没有.为什么会这样?我的代码中是否存在一些愚蠢的错误,核心数据中的错误或????

希望我不是自欺欺人!

self->ctx = [(AppDelegate *) [[UIApplication sharedApplication] delegate] managedObjectContext];
NSFetchRequest * request = [[NSFetchRequest alloc] init];

NSEntityDescription *entityDescription = [NSEntityDescription
                                          entityForName:@"Street" inManagedObjectContext:self->ctx];

NSSortDescriptor* sortDescriptor = [[NSSortDescriptor alloc]
                                    initWithKey:@"street" ascending:YES];
NSArray* sortDescriptors = [[NSArray alloc] initWithObjects: sortDescriptor, nil];


[request setEntity:entityDescription];
[request setSortDescriptors:sortDescriptors];

NSError * error;
NSArray *array = [self->ctx executeFetchRequest:request error:&error];
if(error!=nil){
    NSLog(@"%@", @"Critical model error search");
}
_streets = array;
Run Code Online (Sandbox Code Playgroud)

xcode objective-c

1
推荐指数
1
解决办法
298
查看次数

标签 统计

ios ×2

objective-c ×2

restkit ×2

core-data ×1

couchdb ×1

json ×1

jsonschema ×1

mobile ×1

validation ×1

xcode ×1