- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在弄清楚如何在 NSTokenField 中表示多对多关系模型时遇到了问题。我有两个(相关)模型:
项目标签
一个项目可以有多个标签,一个标签可以有多个项目。所以这是一个反向的一对多关系。
我想做的是在 NSTokenField 中表示这些标签。我想以一个 tokenfield 自动建议匹配结束(找到一种使用 tokenfield:completionsForSubstring:indexOfToken:indexOfSelectedItem 来做到这一点的方法),并且如果它与现有标签实体不匹配,则能够添加新的标签实体。
好的,希望你还在我身边。我正在尝试使用绑定(bind)和数组 Controller 来完成所有这些工作(因为这最有意义,对吧?)
我有一个数组 Controller ,“Item Array Controller”,它绑定(bind)到我的应用委托(delegate) managedObjectContext。显示所有项目的 TableView 绑定(bind)到此数组 Controller 。
我的 NSTokenField 的值绑定(bind)到数组 Controller 选择键和模型键路径:标签。
使用此配置,NSTokenField 将不会显示标签。它只是给我:
: Unknown object type assigned (Relationship objects for {(
(entity: Tag; id: 0x10016d6e0 ; data: )
)} on 0x100169660). Ignoring...
这对我来说很有意义,所以不用担心。我查看了一些 NSTokenField 委托(delegate)方法,似乎我应该使用:
- (NSString *)tokenField:(NSTokenField *)tokenField displayStringForRepresentedObject:(id)representedObject
问题是,这个方法没有被调用,我得到了和以前一样的错误。
好的,所以我的下一步是尝试制作一个 ValueTransformer。从带有标签实体的数组转换为 -> 带有字符串(标签名称)的数组都很好。另一种方式更具挑战性。
我尝试的是在我的共享应用程序委托(delegate)托管对象上下文中查找每个名称并返回匹配的标签。这显然给我带来了不同托管对象上下文的问题:
Illegal attempt to establish a relationship 'tags' between objects in different contexts (source = (entity: Item; id: 0x1003b22b0 ; data: {
author = "0x1003b1b30 ";
createdAt = nil;
filePath = nil;
tags = (
);
title = "Great presentation";
type = "0x1003b1150 ";
}) , destination = (entity: Tag; id: 0x100146b40 ; data: ))
我哪里错了?我该如何解决这个问题?它甚至是正确的方法吗(我觉得你必须使用 ValueTransformer 很奇怪?)
Cảm ơn trước!
câu trả lời hay nhất
我编写了一个自定义的 NSValueTransformer
来映射绑定(bind)的 NSManagedObject/Tag
NSSet
Và NSString
token 字段的 NSArray
。以下是 2 种方法:
- (id)transformedValue:(id)value {
if ([value isKindOfClass:[NSSet class]]) {
NSSet *set = (NSSet *)value;
NSMutableArray *ary = [NSMutableArray arrayWithCapacity:[set count]];
for (Tag *tag in [set allObjects]) {
[ary addObject:tag.name];
}
return ary;
}
return nil;
}
- (id)reverseTransformedValue:(id)value {
if ([value isKindOfClass:[NSArray class]]) {
NSArray *ary = (NSArray *)value;
// Check each NSString in the array representing a Tag name if a corresponding
// tag managed object already exists
NSMutableSet *tagSet = [NSMutableSet setWithCapacity:[ary count]];
for (NSString *tagName in ary) {
NSManagedObjectContext *context = [[NSApp delegate] managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSPredicate *searchFilter = [NSPredicate predicateWithFormat:@"name = %@", tagName];
NSEntityDescription *entity = [NSEntityDescription entityForName:[Tag className] inManagedObjectContext:context];
[request setEntity:entity];
[request setPredicate:searchFilter];
NSError *lỗi = nil;
NSArray *results = [context executeFetchRequest:request error:&error];
if ([results count] > 0) {
[tagSet addObjectsFromArray:results];
}
khác {
Tag *tag = [[Tag alloc] initWithEntity:entity insertIntoManagedObjectContext:context];
tag.name = tagName;
[tagSet addObject:tag];
[tag release];
}
}
return tagSet;
}
return nil;
}
CoreData 似乎在返回时自动建立对象关系(但我还没有完全验证这一点)
Hy vọng điều này sẽ giúp.
关于objective-c - NSTokenField 表示核心数据对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3880961/
Câu hỏi dành cho người mới bắt đầu về Android. OK, tôi đã ghi thành công vào tập tin. Ví dụ. //Lấy tên file String filename = getResources().getString(R.string.filename
Tôi đã lưu cùng một hình ảnh vào /data/data/mypackage/img/ và bây giờ tôi muốn hiển thị toàn màn hình này, tôi đã thử sử dụng ACTION_VIEW để hiển thị chương trình tiêu chuẩn Android nhưng nó không đến từ /data/dat
Tôi đang sử dụng Xcode 9, Swift 4. Tôi đang cố gắng hiển thị hình ảnh trong ImageView từ một URL bằng mã sau: func getImageFromUrl(sourceUrl: String) -> UII
Tôi gặp sự cố khi cài đặt genymotion trên Ubuntu của mình. Chủ yếu là tôi không thể gỡ lỗi cơ sở dữ liệu của mình vì tôi không thể xem nội dung của thư mục /data/ thông qua DBMS trong Eclipse và adb trong shell. Không hiển thị
Tôi đang cố gắng đăng một số dữ liệu JSON bằng PHP. Nhưng đã xảy ra sự cố. Đây là html của tôi -- {% for x in sets %}
Tôi quan sát thấy kết quả khác nhau giữa hai phương pháp. Tại sao lại thế này? Tôi biết chuyện gì đang xảy ra trên lm nhưng không thể hiểu chuyện gì đang xảy ra trên tslm. > thư viện(dự báo) > set.seed(2) > tts lm(t
Tôi không chắc tại sao điều này lại xảy ra! Tôi có một lớp được sử dụng bởi spring data elasticsearch và spring data jpa, nhưng khi tôi thử chạy ứng dụng của mình thì tôi gặp lỗi. Đã tạo lỗi
Trong sơ đồ thuần chay này, nếu tôi tải xuống và chuyển đổi Flare-dependency.json bằng cách sử dụng lệnh jq thành csv sau, jq -r '(map(keys) | add | Unique) as
Tôi đang gửi một dự án trong đó tôi phải tạo cơ sở dữ liệu mysql bằng các bảng. Mọi thứ đều đang diễn ra từ phía tôi, vì vậy tôi chỉ muốn kiểm tra cách gửi tất cả các tệp zip của mình cho một người nào đó bằng một máy tính khác. Về cơ bản, làm cách nào để tạo tệp cơ sở dữ liệu của tôi cho một máy tính khác,
Tôi có một ứng dụng ghi tệp văn bản vào bộ nhớ trong. Tôi muốn nhìn kỹ hơn vào máy tính của tôi. Tôi đã chạy Toast.makeText để hiển thị đường dẫn và nó báo:/data/data/my-bundles nhưng khi tôi truy cập An của Android Studio
Tôi thích tốc độ tải Android bằng trình giả lập Genymotion. Nó có tốc độ rất tốt, nhưng vẫn có một số hiệu suất yếu. Cách truy cập trình giả lập Genymotion từ File Explorer trong Eclipse
Tôi cần thay đổi định dạng của hộp văn bản trong Silverlight. Dữ liệu được ràng buộc thông qua MVVM. Ví dụ: có thuộc tính int, tôi thêm 1 vào giá trị trong setter và gọi OnPropertyChanged
Tôi muốn gửi yêu cầu tới API dữ liệu Youtube nhưng tôi không cần truy cập bất kỳ thông tin người dùng nào. Tôi chỉ muốn duyệt các video công khai và hiển thị video dựa trên cụm từ tìm kiếm. Tôi có thể làm điều này mà không được phép không? Câu trả lời hay nhất YouTube
Tôi đã thiết lập ứng dụng Twilio và tôi muốn gửi thông tin cập nhật cho mọi người nhưng tôi không muốn trả lời từng tin nhắn riêng lẻ. Tôi chỉ muốn họ gọi nếu họ có câu hỏi. Tôi thấy mọi thứ đều hoạt động tốt nhưng tôi muốn hiển thị văn bản đến khi gửi để đảm bảo rằng tôi không bỏ sót bất kỳ câu hỏi nào. Tôi đang sử dụng p
Tôi có một trang web có biểu mẫu (hiện tại nó là HTML đơn giản, nhưng chúng tôi đang chuyển sang JQuery). Quá trình này như sau: chấp nhận đầu vào của người dùng --- 5 số nguyên, gọi dịch vụ mạng thông qua REST, chạy một số phép tính ở phía máy chủ... và tạo ra một
Giả sử chúng ta có một tệp có tên là configure.js, khi nhìn vào bên trong chúng ta thấy: 'use strict'; var profile = { "project": "%Projec
Phần này là phần mở rộng của Câu hỏi trước: Bây giờ tôi có thể trả về thành công dữ liệu JSON từ Bộ điều khiển CI của mình, dữ liệu này trả về: {"results":[{"id://1","Sourc
Có cách nào hiệu quả để xóa tất cả lưu trữ tài liệu của CBL trong ios không? Tôi có một câu hỏi về vấn đề này hoặc nếu có ai biết cách làm cho ứng dụng hoạt động giống như vừa được cài đặt thì điều đó cũng sẽ thực sự hữu ích. Chúng tôi đang nỗ lực đảm bảo rằng việc đăng xuất của chúng tôi thực sự đặt ứng dụng vào
Tôi có ứng dụng Rails giao tiếp với các ứng dụng Rails khác để chèn dữ liệu. Tôi đang sử dụng phương thức jQuery $.post để chèn dữ liệu. Để chèn, các ứng dụng Rails khác của tôi hiển thị 200 OK. Nhưng trong
Tôi đang chạy thử nghiệm đơn vị cho lệnh gọi API phục vụ yêu cầu đăng bài. Tôi đang chuyển nội dung yêu cầu và phải trả lại phản hồi dưới dạng dữ liệu tài khoản. Nhưng tôi chỉ nhận được lỗi xác nhận Lưu ý: Dữ liệu được tìm nạp từ Azure spec.js const accou
Tôi là một lập trình viên xuất sắc, rất giỏi!