簡體   English   中英

您是否應該在Realm iOS中異步存儲圖像?

[英]Should you asynchronously store images in Realm iOS?

我目前正在使用Realm在我創建的應用程序中實現數據持久性。

我想做的是,當應用程序首次打開時,它會從api中獲取數據。 我想從該數據中獲取所有內容並進行存儲,以便即使沒有活動的互聯網連接也可以使用該應用程序。

但是,我可以實現存儲諸如用戶名和手機號碼之類的字符串,但是我不確定如何存儲圖像。

這是我到目前為止的內容:

@interface User : RLMObject

@property NSString *userName;
@property NSString *mobileNumber;
@property NSData *avatarData;

@end


- (void)viewDidLoad {
    [super viewDidLoad];

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [manager GET:[NSString stringWithFormat:@"%@users?auth_token=%@",BASE_URL,AUTHENTICATION_TOKEN]parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {

        [self storeFetchedData: responseObject];

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

    }];

}

- (void)storeFetchedData:(NSDictionary *)list {
    RLMRealm *realm = [RLMRealm defaultRealm];
    [realm beginWriteTransaction];

    for (id slUser in list) {
        User *user = [[User alloc] init];
        user.userName = slUser[@"name"];
        user.realName = slUser[@"mobileNumber"];

        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){

            user.avatarData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString:slUser[@"image_url"]]];

        });
    }

    [realm commitWriteTransaction];

}

[self.tableView reloadData];

我對iOS並不陌生,但這是我第一次使用realm或諸如此類。但是,我懷疑線程問題是因為在主線程上完成了提交。 我也很好奇這是否是不好的做法。

干杯

雖然您可以將圖像作為NSData屬性存儲在Realm中,但是我建議將圖像寫出到磁盤上,或者使用Pinterest的PINCache之類的東西 ,然后將路徑/密鑰作為字符串屬性存儲在Realm中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM