我们有一个简单的类Person,它来自领域Object.现在我们希望该子类符合Equatable协议.非常简单的代码看起来像这样.
class Person: Object, Equatable {
dynamic var localID = "0"
dynamic var name:String?
}
func ==(lhs: Person, rhs: Person) -> Bool {
return lhs.localID == rhs.localID
}
Run Code Online (Sandbox Code Playgroud)
我们从领域版本0.98.8开始,一切都按预期工作.当我们更新到版本0.102.0(以及其他版本之间)时,会出现编译器错误消息
Error: Redundant conformance of ‚Person‘ to protocol ‚Equatable‘
Run Code Online (Sandbox Code Playgroud)
不够奇怪,如果降级回版本0.98.8,错误仍然存在.另一个奇怪的行为,在我们的一个开发者机器上,相同的代码编译得很好.
经过一些研究,我们不知道发生了什么,以及如何解决或解决这个问题.
我试图准备OSM(*.osm.pbf) - 整个意大利的数据,用于离线使用iPhone-app.我需要从7到16的缩放级别,因为全国各地都有很多POI.
这是我的出发点.此解决方案的问题是数据库的文件大小.
是否有针对iOS 6/7的基于矢量的离线地图使用的开源解决方案?或者,是否可以最小化数据库文件大小?
我想生成一个podspec文件,它有一个自定义框架,一个类和一个第三方框架作为依赖.
单个类通过包含该框架的一个头来引用自定义框架.如果我跑
pod lib lint
出现此错误:
- ERROR | [xcodebuild] /Users/xyz/Documents/iOS/Apps/Sample/Core/Sample.h:10:9: fatal error: 'CustomFramework/Bar.h' file not found
我的podspec文件的相关部分如下所示:
s.source_files = 'Core/*' , 'Core/CustomFramework.framework/Headers/*.h'
s.preserve_paths = 'Core/CustomFramework.framework/**/*'
s.xcconfig = { 'FRAMEWORK_SEARCH_PATHS' => '"${PODS_ROOT}/Headers"' }
s.frameworks = 'CustomFramework'
s.xcconfig = { 'OTHER_LDFLAGS' => '-ObjC' , 'LIBRARY_SEARCH_PATHS' => '"${PODS_ROOT}/CustomFramework/Headers"'}
s.dependency 'MapBox', '1.1.0'
Run Code Online (Sandbox Code Playgroud)
单个类继承自MapBox框架的类.
我觉得我想念一些但却无法弄清楚是什么.有什么建议或提示吗?
我在保存请求后直接需要新创建的联系人的标识符.用例:在我的应用程序中,用户创建一个新联系人并为他们提供一些属性(例如姓名,地址......),之后他可以保存联系人.此方案正如预期的那样工作.我的代码看起来像这样:
func createContact(uiContact: Contact, withImage image:UIImage?, completion: String -> Void)
{
let contactToSave = uiContact.mapToCNContact(CNContact()) as! Cnmutablecontawctlet
if let newImage = image
{
contactToSave.imageData = UIImageJPEGRepresentation(newImage, 1.0)
}
request = CNSaveRequest()
request.addContact(contactToSave, toContainerWithIdentifier: nil)
do
{
try self.contactStore.executeSaveRequest(request)
print("Successfully saved the CNContact")
completion(contactToSave.identifier)
}
catch let error
{
print("CNContact saving faild: \(error)")
completion(nil)
}
}
Run Code Online (Sandbox Code Playgroud)
Contact Object(uiContact)只是CNContact的包装器.在闭包完成时,我需要返回标识符,但此时我无权访问它们,因为他是在写入过程之后由系统创建的.一种解决方案可能是使用谓词获取新保存的CNContact
public func unifiedContactsMatchingPredicate(predicate: NSPredicate, keysToFetch keys: [CNKeyDescriptor]) throws -> [CNContact]
Run Code Online (Sandbox Code Playgroud)
但在我看来,这似乎有点不洁,因为这种接触可能只有一个名称,而且可能存在多个名称.像创建标识符的回调之类的东西会很好.但事实并非如此.还有其他方法可以解决这个问题吗?